如何将mysql导出的数据导入oracle

如何将mysql导出的数据导入oracle,第1张

一、将表中数据导入文本文件保存

我是在WIN下的命令行模式做的

Mysql>select * from my_mysql_table into outfile 'c: /my_tmp.txt'

二、写控制文件

用记事本开文档写完后改扩展名为.ctl,以下是具体内容

load data

infile 'c:/my_tmp.txt'

into table my_ora_table

replace

fields terminated by x'09'

(字段1,字段2,字段3,......字段N)

字段1~N是你要导入的MySql的表字段数据,不需要的字段可以不写。

三、用Sqlldr导入文本

c:\>sqlldr ora_usr

回车后输入控制文件的路径,密码,接下来加载控制文件自动导入。导入完成后,会生成个.log文件,可以查看你导入是否成功,不成功按提示的错误查找原因。

注意的是:导入文本前,应在ORACLE数据库中事先建好要写入数据的表,并且要和所要导入的数据字段一致,如果不知MySql的表结构,可以在Mysql>show create table my_mysql_table;查看建表的SQL,将其转换成Oracle中可执行的SQL.

用sqlldr从mysql导出一个表的数据到oracle中:

*** 作步骤:

1、进入mysql

mysql>select UUID, CYC_CODE, b03_05, b03_06, b03_07, b03_08, b03_09, b03_10, b03_11, b03_12, Cate_Item_Code, product_name, product_unit

from jb603_jb603_sub3 into outfile 'd:/tmp/603sub.txt'

Query OK, 79537 rows affected (0.48 sec)

mysql>show create table jb603_jb603_sub3

| jb603_jb603_sub3 | CREATE TABLE `jb603_jb603_sub3` (

`UUID` varchar(32) NOT NULL default '',

`CYC_CODE` char(2) NOT NULL default '',

`b03_05` decimal(11,2) default '0.00',

`b03_06` decimal(11,2) default '0.00',

`b03_07` decimal(11,2) default '0.00',

`b03_08` decimal(11,2) default '0.00',

`b03_09` decimal(9,0) default '0',

`b03_10` decimal(11,2) default '0.00',

`b03_11` decimal(11,2) default '0.00',

`b03_12` decimal(11,2) default '0.00',

`Cate_Item_Code` varchar(7) NOT NULL default '',

`product_name` varchar(60) default '',

`product_unit` varchar(20) default '',

PRIMARY KEY (`UUID`,`CYC_CODE`,`Cate_Item_Code`)

) TYPE=InnoDB |

2、将语句整理成oracle支持的格式:

CREATE TABLE jb603_jb603_sub3 (

UUID varchar(32) NOT NULL ,

CYC_CODE char(2) NOT NULL ,

b03_05 number(11,2) ,

b03_06 number(11,2) ,

b03_07 number(11,2) ,

b03_08 number(11,2) ,

b03_09 number(9,0) ,

b03_10 number(11,2) ,

b03_11 number(11,2) ,

b03_12 number(11,2) ,

Cate_Item_Code varchar(7) NOT NULL ,

product_name varchar(60) ,

product_unit varchar(20) ,

PRIMARY KEY (UUID,CYC_CODE,Cate_Item_Code))

3、编写sqlldr控制文件t.ctl

load data

infile 'd:/tmp/603sub.txt'

into table jb603_jb603_sub3

replace

fields terminated by x'09'

(UUID, CYC_CODE, b03_05, b03_06, b03_07, b03_08, b03_09, b03_10, b03_11, b03_12, Cate_Item_Code, product_name, product_unit)

3运行sqlplus /nolog

SQL>conn lt/lt5@ibmlt

建立jb603_jb603_sub3表

SQL> CREATE TABLE jb603_jb603_sub3 (

2UUID varchar(32) NOT NULL ,

3CYC_CODE char(2) NOT NULL ,

4b03_05 number(11,2) ,

5b03_06 number(11,2) ,

6b03_07 number(11,2) ,

7b03_08 number(11,2) ,

8b03_09 number(9,0) ,

9b03_10 number(11,2) ,

10b03_11 number(11,2) ,

11b03_12 number(11,2) ,

12Cate_Item_Code varchar(7) NOT NULL ,

13product_name varchar(60) ,

14product_unit varchar(20) ,

15PRIMARY KEY (UUID,CYC_CODE,Cate_Item_Code))

表已创建。

5、ho进入 *** 作系统命令行

在 *** 作系统命令行运行sqlldr lt/lt_5@ibmlt d:/tmp/t.ctl

提交导入脚本,逻辑记录计数79537

6、exit回到sqlplus查询导入结果

SQL>select count(*)from JB603_JB603_SUB3

COUNT(*)

----------


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9931306.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存