1. 程式人生 > 其它 >使用 load data 匯入資料

使用 load data 匯入資料

(1)使用 load data 匯入資料,首先要準備一個檔案,本例是test.txt

mysql> load data local infile '/root/test.txt' ignore into table login character set utf8 fields terminated by ',' lines terminated by ';';

test.txt裡有對應資料庫表login的所有列,以下是這條命令的一些說明(詳細解釋傳送文末參考連結)

ignore -> 代表已有該記錄則跳過(比如插庫的時候程式寫了一條操作記錄)

character set utf8 -> 為了解決中文字元問題(具體應該和資料庫表設定的一致)

fields terminated by ',' -> 每條記錄中以逗號分隔列

lines terminated by ';' -> 記錄以分號分隔記錄

 

 

# tail -3 test.txt
11145,test1,登入,2019-06-03 14:53:30,FAIL,密碼錯誤,188.188.188.188;
11146,test1,登入,2019-06-03 14:53:30,FAIL,密碼錯誤,188.188.188.188;
11147,test1,登入,2019-06-03 14:53:30,FAIL,密碼錯誤,188.188.188.188
注意:最後一條記錄結尾不能帶分號,否則會多插入一條記錄,僅有主鍵(該例是id自增)其它列值為NULL

但是這樣處理,插入資料後,最後條記錄的最後一列的邊線會往前錯位(不影響功能……但是強迫症看著很不舒服……)

解決:各種試,發現匯入的檔案最後一行結尾加個逗號(列分隔符)就好啦,如下

 

 

# tail -3 test.txt
11145,test1,登入,2019-06-03 14:53:30,FAIL,密碼錯誤,188.188.188.188;
11146,test1,登入,2019-06-03 14:53:30,FAIL,密碼錯誤,188.188.188.188;
11147,test1,登入,2019-06-03 14:53:30,FAIL,密碼錯誤,188.188.188.188,
(2)生成匯入的檔案

因為不要求內容,只需要一定的資料量,寫了以下shell指令碼生成重複資料到需要匯入的檔案test.txt

#!/bin/bash
MYSQL_PATH=/opt/mysql
USERNAME="somename"
PASSWORD="somepasswd"
DBNAME="somedb"

result=`${MYSQL_PATH}/bin/mysql -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"select id from login order by id DESC limit 1;"`
#echo $result #eg: id 1122

pri_id=`echo ${result} | awk '{print $2}'`
#echo $pri_id #看現在到哪個id了 eg: 1122

id=$(($pri_id+1))
#echo $id #eg: 1123

rm -rf /root/test.txt

num=5 # 想生成多少條記錄寫在這,這種方法匯入幾萬條很快的

for((i=1;i<num;id++,i++))

do echo "$id,test1,登入,2019-06-10 08:53:30,SUCCESS,\N,188.188.188.188;" >> /root/test.txt # "\N"對應表裡的"NULL"

done

echo "$id,test1,登入,2019-06-03 14:53:30,FAIL,密碼錯誤,188.188.188.188," >> /root/test.txt

${MYSQL_PATH}/bin/mysql -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"load data local infile '/root/test.txt' ignore into table login character set utf8 fields terminated by ',' lines terminated by ';';"
(附)資料庫表login結構示例,其中ip是胡亂寫的:

mysql> select * from login limit 2;
+----+----------+---------+---------------------+-----------+--------------+-----------------+
| id | username | logname | logtime | logresult | opcontent | ip |
+----+----------+---------+---------------------+-----------+--------------+-----------------+
| 1 | test1 | 登入 | 2019-06-10 09:46:03 | FAIL | 密碼錯誤 | 188.188.188.188 |
| 2 | test1 | 登入 | 2019-06-10 09:46:10 | SUCCESS | NULL | 188.188.188.188 |
+----+----------+---------+---------------------+-----------+--------------+-----------------+
2 rows in set (0.00 sec)

mysql
————————————————
版權宣告:本文為CSDN博主「wy_hhxx」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/wy_hhxx/article/details/90900117