2010-11-16 104 views
0

我有一個文本文件,其所有列由\ t(製表符)分隔。總共有34列,但我只需要讀取並插入前兩列,即ID和名稱。表結構如下:LOAD DATA INFILE選擇列

CREATE TABLE tempitemnameid SMALLINT(5)NOT NULL, name VARCHAR(255)NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB的;

可以使用什麼查詢來選擇並插入前兩列,然後切入下一行?在第1行

'17' 列 '身份證',我不能讓過去的是:

load data infile 'itemname.txt' into table itemname

拋出錯誤1366:不正確的整數值。直到我明白了這一點,我什麼也做不了...... 另外,這個文件長18094行,所以手動插入會令人筋疲力盡,至少我還有其他類似的文件。

回答

-2

您可以指定要在

要插入的數據表中的列下面是命令的語法:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' 
    [REPLACE | IGNORE] 
    INTO TABLE tbl_name 
    [CHARACTER SET charset_name] 
    [{FIELDS | COLUMNS} 
     [TERMINATED BY 'string'] 
     [[OPTIONALLY] ENCLOSED BY 'char'] 
     [ESCAPED BY 'char'] 
    ] 
    [LINES 
     [STARTING BY 'string'] 
     [TERMINATED BY 'string'] 
    ] 
    [IGNORE number LINES] 
    [(col_name_or_user_var,...)] 
    [SET col_name = expr,...] 

欲瞭解更多信息,請檢查docs

+0

我知道語法,沒有幫助。問題主要是錯誤1366. – jurchiks 2010-11-16 15:55:51

+0

出於某種原因,當我添加IGNORE時,表成功加載,只有第一行有ID 0,其他人有正確的ID。那是怎麼回事? – jurchiks 2010-11-16 17:01:14

+0

可能在文件的開頭有一些垃圾字符。 – shantanuo 2010-11-18 11:29:56

1

在加載命令嘗試列出要導入到其中的字段和行的其餘部分將被忽略:

LOAD DATA INFILE「itemname.txt」 INTO TABLE ITEMNAME領域TERMINATED BY「\ t」行'\ n'(id,name);

終止符(\ t和\ n)在這種情況下並不是嚴格必要的,因爲這些都是默認值。如果您的輸入使用不同的終結符,則還需要在命令中指定這些終結符。