mysql导入csv格式数据

首先从oracle中导出数据,采用工具sqluldr2,sqluldr2是一款Oracle数据快速导出工具,包含32、64位程序,sqluldr2在大数据量导出方面速度超快,能导出亿级数据为excel文件,另外它的导出速度也是非常快速,功能是将数据以TXT/CSV等格式导出。

1、先下载工具sqluldr2.zip,解压。

在windows下我们使用sqluldr264.exe,输入cmd,进入dos界面

C:\zhanglinwang\soft\sqluldr2\sqluldr264.exe USER=wireless/密码@wuxian_qy QUERY="select /*+ parallel(2) */  * from userlog" table=userlog head=yes charset=utf8 FILE=C:\zhanglinwang\userlog.csv

说明:USER=wireless/密码@wuxian_qy,以为我本地配置有数据库的监听,所以写了监听的名字wuxian_qy,也可以直接写成USER=wireless/密码@10.xx.xx.xx/test  (数据库ip/数据库名称)

2、导入到mysql中

mysql -h127.0.0.1 -uhive -phive
mysql> show variables like 'sql_mode';
+---------------+----------------------------------------------------------------+
| Variable_name | Value                                                          |
+---------------+----------------------------------------------------------------+
| sql_mode      | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+----------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> set sql_mode='';
Query OK, 0 rows affected (0.00 sec)


mysql> load data infile "C:\zhanglinwang\userlog.csv" 
mysql> into table CUSTOMINFO
mysql> CHARACTER SET utf8
mysql> fields terminated by ','
mysql> LINES TERMINATED BY '\r\n'
mysql> IGNORE 1 LINES;

-----------------------------------------------

重点说明:如果字段中有换行,导出就需要设置一些参数,否则会产生多余的行

比如导出以#号分割,如果有换行,就会产生多余的行,如下图:

mysql导入csv格式数据

导入到数据库中就产生多余的记录

mysql导入csv格式数据

这时我们在导出的时候,就需要设置一些参数,处理换行

导出数据:

sqluldr264.exe USER=yw_omsm/[email protected]_omsm QUERY="select /*+ parallel(2) */ t.oid,t.maintainno,t.maintainsource,t.description,t.processdesc from t_maintain t;" table=t_maintain head=yes field=0x23 escape='\' escf=0x0a esct=n FILE=F:\software\数据库\sqluldr2\t_maintain.txt

没有换行了

mysql导入csv格式数据

再导入到mysql中

load data local infile "F:/software/数据库/sqluldr2/t_maintain.txt" 
into table t_maintain
CHARACTER SET gbk
fields terminated by '#'
IGNORE 1 LINES;

数据库表也正常了

mysql导入csv格式数据