为了将Oracle的数据迁移到Mysql,使用Navicat类的工具迁移太慢,针对超1亿级别的个别表,使用spool先导出成CSV文件,然后在mysql中使用load命令装载CSV文件中的数据到表中。
注意点如下,一定要关掉命令输出,关掉之前,一秒钟1万条,关掉后,一秒钟大约20万条:
set SERVEROUT off
set TERM off
第二个注意点,要设置行的长度,防止换行,且需要设置截断行后多余的空白字符、防止分页
SET LINESIZE 2500
set trimspool on
set pagesize 0
outfile.sql文件命令如下:
set colsep ,
set feedback off
set heading off
set trimout on
set pagesize 0
set echo off
set SERVEROUT off
set TERM off
set trimspool on
SET LINESIZE 2500
spool /data/output.csv
select ‘”‘ || C1 || ‘”,”‘ || C2 || ‘”,”‘ || C3 || ‘”,”‘ || PKID || ‘”‘ from SCHEMA.TABLE_NAME;
spool off
exit
启动命令:
sqlplus -s user/password@orcl @outfile.sql
Mysql导入命令:
load data infile “/var/lib/mysql-files/output.csv” into table SCHEMA.TABLE_NAME fields terminated by ‘,’ enclosed by ‘”‘;
设置好行分割符和字段使用双引号括起来。