- 登陆
oralce用户。 - 新建
test.sql并编辑:
set linesize 2000
---set colsep ,
set feedback off
set heading off
set trimout on
set newpage none
set termout off
set trimspool on
spool /home/oracle/XXX.sql
select 字段名1 || ',' || 字段名2 || ',' || to_char(UPDATETIME,'yyyy/mm/dd hh24:mi:ss') || ',' || 字段名3 from XXX;
spool off
exit
spool /home/oracle/XXX.sql后面是你要的导出路径和导出文件名,最好是txt结尾的,不是的话等导完需要改名。
之后是select语句,字段和表名根据实际更改,日期要用to_char进行转换。
- 运行命令
sqlplus -s 用户名/密码@实例名 @test.sql进行导出。 - 把导出的文件传到
mysql所在主机。 - 登陆
mysql,输入show global variables like 'local_infile';查看是否开启了导入文件功能,是off的话运行set global local_infile='ON';来开启。 - 退出mysql,再用
mysql -u root -p --local-infile=1命令重新登陆。 - 进入你需要的库来执行以下命令。
load data local infile '/data01/zhu/XXX.txt' into table table_name character set utf8 fields terminated by ',';
/data01/zhu/XXX.txt是你oracle导出文件的位置,只支持txt文件,fields terminated by ','意思是你字段间的分隔符。一般没有中文用character set utf8,有中文用character set gb2312,不然可能会报错。
PS:180万条数据导进去的时间大概是2分钟。但是700万数据目前超过四小时还没导完,建议分割来提高效率。