(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
