MySQL用load data命令進行資料匯入方法

來源:互聯網
上載者:User

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倍。使用方式如下:

 代碼如下 複製代碼
mysql>load data local infile "D:/ab.txt" into table mytbl(name,age);   

  

使用上述的命令就可以將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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.