mysql导入表格,txt操作(以及常见问题解决方法)
在現實生活中,我們可能需要往數據庫中插入大量數據。
這時候我們可以直接將表格導入到數據庫中。
示例1.導入txt
原始數據
第一步:創建表
CREATE TABLE IF NOT EXISTS POWER(useshuju INT(50) ); DESC POWER; SELECT * FROM POWER;第二步:插入
語法
LOAD DATA LOCAL INFILE ‘文件路徑’
INTO TABLE 表名
CHARACTER SET utf8
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\r\n’
IGNORE 1 LINES;#忽略表頭,即表頭不插入
說明下:
1.文件路徑\或者/。路徑問題,注意windows 下\和linux 下/的區別。
2.必須加local,如果不加,寫成這樣LOAD DATA INFILE,可能會出現錯誤
找不到文件。
fields terminated by ‘,’ ------字段間以,號分隔
optionally enclosed by ‘"’ ------字段用"號括起
escaped by ‘"’ ------字段中使用的轉義符為"
lines terminated by ‘\r\n’ ------行以\r\n結束
(字段1,字段2,字段3);#字段可以不寫,如果寫即表示數據庫的表和本地的表不是一一對應,數據庫的表字段多余本地表。
第三步:查詢
SELECT * FROM POWER;示例2,導入csv
由于表格很多時候是gbk編碼.
我們需要轉換成utf8編碼.
現在是這樣處理的:
第一步,用Excel創建文件,另存為 .csv 格式;
第二步,用記事本打開 CSV 文件,然后另存為 UTF-8 格式
將問題轉換成txt文件導入。
得到的文件示意圖。
代碼
CREATE TABLE IF NOT EXISTS POWER(id INT(50),#序號va FLOAT(50),#valuestimes DATETIME,#時間 timemins FLOAT(32),#minutehou FLOAT(32),#hourdom FLOAT(32)#dom ); DESC POWER; SELECT * FROM POWER;LOAD DATA LOCAL INFILE 'C:\\Users\\Shineion\\Desktop\\chufang.txt' INTO TABLE POWER CHARACTER SET utf8 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;CHARACTER SET utf8:因為有中文數據,所以指定utf-8編碼。
FIELDS TERMINATED BY ‘,’:csv文件以 ‘,’ 分隔數據。
.IGNORE 1 LINES:跳過原始文件中的第一行表頭數據。如果不寫,表頭會被當作數據導入。如果要跳過從頭開始的多行,可以改變LINES前面的數字。
可以在插入語句最后一列加上字段。 要導入數據的字段放在最后,將字段順序和原始文件里的順序保持一致。
常見問題
問題1:文件的絕對路徑不能有中文,有中文運行結果顯示
文件找不到。
File ‘C:\Users\Shineion\Desktop\數據.txt’ not found (Errcode: 2)
問題2:ERROR 1148 (42000): The used command is not allowed with this MySQL version
錯誤語句:mysql> LOAD DATA LOCAL INFILE ‘/var/lib/mysql/pet.txt’ INTO TABLE tbl_pet;
出錯原因:多了一個LOCAL關鍵詞。當文件在客戶機端時要寫LOCAL,在服務器端時不用寫。我的txt文件是和MySQL數據庫在同一虛擬機上的,所以不用加LOCAL。
問題3ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
出錯原因:MySQL設置了secure-file-priv屬性對應的路徑,當數據文件從其他路徑導入時便會報錯。
解決辦法:查看secure-file-priv指定路徑并把數據文件放進去。
問題4 ERROR 1292 (22007): Incorrect date value: ‘’ for column ‘death’ at row 1
出錯原因:一開始直接把原始表格里的數據復制到txt文件里沒有處理,空值的地方是空的,不符合MySQL里空值的表示方式,所以報錯。
解決辦法:將空值用\N代替。參考https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html
問題5 使用 LOAD DATA INFILE ‘/var/lib/mysql-files/pet.txt’ INTO TABLE tbl_pet; 導入數據仍然失敗
錯誤提示:’ for column ‘death’ at row 1 date value: 'N
出錯原因:fields terminated by 默認值是’\t’,lines terminated by 默認值是’\n’,而Windows上的文件換行是’\r\n’,Mac OS X是’\r’。
解決辦法:加上LINES TERMINATED BY ‘\r\n’,如下:
mysql> LOAD DATA INFILE ‘/var/lib/mysql-files/pet.txt’ INTO TABLE tbl_pet LINES TERMINATED BY ‘\r\n’;
本篇博客有借鑒https://blog.csdn.net/u013378642/article/details/81220809
電氣工程的計算機萌新:余登武。寫博文不容易。如果你覺得本文對你有用,請點個贊支持下,謝謝。
總結
以上是生活随笔為你收集整理的mysql导入表格,txt操作(以及常见问题解决方法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 注销信用卡请记得挂失 不挂失容易出现额外
- 下一篇: python sklearn学习笔记大全