LOAD DATA語法說明:
LOAD DATA INFILE句法
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 't']
[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\' ]]
[LINES TERMINATED BY 'n']
[IGNORE number LINES]
[(col_name,...)]
最簡單的方法
代碼如下 復制代碼mysql>load data local infile "D:/ab.txt" into table mytbl(name,age);
MySQL支持load data命令的數據導入,該方式比直接的insert的效率要高,按照官方的說法是要比insert語句快上20倍。使用方式如下:
使用上述的命令就可以將D:/ab.txt文件的內容導入到表mytbl中,其中name和age是表mytbl的字段,對應ab.txt文件中每行的數據。如果編譯安裝mysql時沒有指定–enable-local-infile,那麼在使用上述命令時會報如下錯誤:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
解決方式有兩種,一是重新編譯安裝加上上面的參數,而是直接用命令行執行,如下:
代碼如下 復制代碼mysql -uroot -proot mydb_name --local-infile=1 -e 'load data local infile "D:/ab.txt" into table mytbl(name,age)'
測試了一把,導入300萬條數據時,使用load data命令的時間花銷大概在3分鐘左右,還是非常不錯的!
導入時一些常用錯誤
系統報錯:
Data truncated for column 'f3' at row 1
可能是由於字段定義為double型,而文本文件中是空值,將文本文件更新為:
abc;cdef;2;
再次導入,報錯如下:
Row 1 doesn't contain data for all columns
分析原因可能是由於表中字段一共是5個,而在文本數據源中有了4個字段,少1個字段。
Data truncated for column 'f3' at row 1 ,
我理解系統應當按空值處理,即在數據庫中這個字段default值為“-1”,
解決辦法
代碼如下 復制代碼load data infile 'D:\my_program\Tek_sig\example_data1.txt'
into table TABLE_NAME
FIELDS TERMINATED BY ';'
LINES TERMINATED BY 'n'
(f1,f2,f3,f4)