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;

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

重點說明:如果字段中有換行,導出就需要設置一些參數,否則會產生多餘的行

比如導出以#號分割,如果有換行,就會產生多餘的行,如下圖:

導入到數據庫中就產生多餘的記錄

這時我們在導出的時候,就需要設置一些參數,處理換行

導出數據:

sqluldr264.exe USER=yw_omsm/yw_omsm@yw_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中

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

數據庫表也正常了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章