使用 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM