首先從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;
數據庫表也正常了