用sqlserver2000自带的导入导出数据工具,将access表中的数据导入到oracle中去
下面是我在一个人的博客中找到的注意事项,你可以看一看
1.导入的时候access中的表名必须是大写的,否则导进去之后,因为sqlplus运行到后台的时候会把所有字符自动变为大写,而oracle大小写敏感,所以生成的小写表无法访问,你用toad或DBARtsion也是白搭
2.表中的字段名称比如user之类的改进改名,很有可能就会因为这个卡掉,得重新导
3.注意数据库中的数据,有可能会出现因为数据导致导入一半后卡住,出现这种问题的时候多半是因为备注转化为的对象类型不对
4.ACCESS中的备注问题,这个是个头疼的问题,真tm头疼,刚开始我用OLE
DB方式连接数据库,备注默认转化的oracle数据类型为LONG,但是TNND每张oracle表中最多只有一个LONG类型的字段,(古怪的规定~!我找了半天没找到原因),琢磨了半天后决定舍弃(当初选OLE
DB是受页面里面OLE
DB连接比ODBC连接先进点的观点影响。。),改用ODBC,这里连接数据库的时候有几种方法,我选的是用定义好的文件来连接,在生成文件的时候一定要注意,用户名和密码必须是大写的,不然的时候你就等着哭吧,然后配连接好的,执行导入,我第一遍的时候就相当成功,但是后来因为插错数据和表格,又懒的删只好删掉用户重新导,一模一样的数据,就是用户名变了,nnd就报了n多错误,备注自动生成的方式是CLOB,我们ACCESS数据库表中还有个OLE对象类型的,自动转化为BLOB类型,在页面上不能直接用通俗的方法获取rs读CLOB,要是这样写,一准报错,这个问题一直没解决。。从网上找了些资料,有种说将对象分割拿出来,但太麻烦了,能生成一个完整的结果集就不错了。。还有迭代,我们哥俩商量了半天准备用VARCHAR2(2000)替代,结果页面报错。
② 如何将数据导入oracle数据库
1、 运行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中选择Oracle Database Server,如果第一次使用会告之要求加载驱动程序ojdbc14.jar。
加载驱动程序之后,界面将变成如下的形式,在其中填写Oracle数据库的连接信息,按“Next”继续。
2、 在Target Database中默认Database System为MySQL Server,在Connection Parameters中填写相应的MySQL数据库的连接信息,按“Next”继续。
3、进行数据库连接测试,测试通过后按“Next”到Source Schemata Selection,点选准备进行数据迁移的Schemata后按“Next”继续。
4、在Object Type Selection,点Detailed selection按钮,在下方左侧列表中选择不进行迁移的表,将其放入右侧列表中,即左侧列表剩余的表都将进行数据迁移。选择好之后按“Next”继续。
5、
在Object Mapping的Migration of type Oracle Schema,如果要设置参数,点Set
Parameter按钮。如果默认数据库表为UTF8的话,则选择Multilanguage;如果默认数据库表为GBK的话,则需要选择User
defined,并在下方填写charset=gbk, collation=gbk_general_ci。Migration of type
Oracle Table中要设置参数点Set Parameter按钮。如果默认数据库表为UTF8的话,则选择Data
consistency/multilanguage;如果默认数据库表为GBK的话,则需要选择User
defined,并在下方填写addAutoincrement=yes, charset=gbk,
collation=gbk_general_ci, engine=INNODB。选择好之后按“Next”继续。
6、再到Manual
Editing,在这里可以修改建表脚本。由于Oracle与MySQL之间语法规则的差异,通常需要对脚本的数据类型以及默认值进行调整,比如
Oracle中通常会对Timestamp类型的数据设置默认值sysdate,但在MySQL中是不能识别的。在Filter中选择Show All
Objects,然后在Migrated
Objects中选择要修改脚本的表,再点击左下方的Advanced就可以进行脚本编辑了。修改完之后点击右侧Apply
Changes按钮保存,按“Next”继续。
7、然后一路“Next”,如果没有提示出错的话,就可以将指定表中的数据导入MySQL了。如果有提示出错信息,则需要返回到Manual Editing处对脚本重新进行修改。
需
要补充一点,在导大容量数据特别是CLOB数据时,可能会出现异常:“Packets larger than max_allowed_packet
are not
allowed”。这是由于MySQL数据库有一个系统参数max_allowed_packet,其默认值为1048576(1M),可以通过如下语句
在数据库中查询其值:
show VARIABLES like '%max_allowed_packet%';
修改此参数的方法是在mysql文件夹找到my.ini文件,在my.ini文件[mysqld]中添加一行:
max_allowed_packet=16777216
重启MySQL,这样将可以导入不大于16M的数据了,当然这数值可以根据需要作调整。
③ oracle创建用户后怎么导入数据库
数据库用户的创建、权限的分配
数据库安装完成后,有两个系统级的用户:
system 默认密码为:manager
sys 默认密码为:change_on_install
在安装的数据库目录中找到 \oracle\proct\9.2\bin 中的sqlplus程序, 运行:./sqlplus system/manager@ora9i
用system用户创建自己的用户、权限;sql语句如下:
1、创建用户:
create user username identified by pwd default tablespace users Temporary TABLESPACE Temp;
2、 用户授权 grant connect,resource,dba to business;
3、 提交: commit;
数据库数据的导入,导出
假设有两个数据库 9.0.1 与 9.0.2 1.导出数据
exp system用户/system的密码@服务器名 owner用户名=“oradial ” file="oradial.dmp"
说明:
(1) 如果该命令是在本地执行,则不用指定服务器名
(2) owner用户名,通过sys用户的登录所创建的用户名。同时授予的权限包括
connect , dba , resource ,还要创建表空间。
(3) system用户名,owner用户名 是9.0.1数据库中的用户 2.导入数据
imp system用户/system的密码@服务器名 file=oradial.dmp fromuser(用户名)=oradial touser(用户名)=abc
若了解更多详情,在DOS下输入 exp help = y imp help = y