2012-06-21 71 views
1

我試圖導入文本文件到MySQL數據庫中,並且我無法使第一個字段(card_no)完全填充到我的所有記錄中。導入文件(不會產生任何錯誤)後,第一條記錄正確顯示,但其他記錄不顯示。任何人都可以告訴我如何補救這個? - 萬一它很重要,我使用phpMyAdmin加載文件。 - 謝謝你的時間。麻煩填充數據庫的所有字段

這裏的數據庫的結構:

Field  Type   Collation   Attributes Null  
card_no  smallint(6)      Yes   NULL 
name  varchar(100) latin1_swedish_ci No  
artist  varchar(30)  latin1_swedish_ci Yes   NULL 
color  varchar(25)  latin1_swedish_ci Yes   NULL 
rarity  varchar(1)  latin1_swedish_ci Yes   NULL 
expansion varchar(50)  latin1_swedish_ci Yes   NULL 

下面的代碼:

LOAD DATA LOCAL INFILE 'C:\\xampp\\tmp\\php43.tmp' 
    INTO TABLE `mtginfo` FIELDS TERMINATED BY ';' 
    ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY ','; 

這裏的導入的文件:

"1";"Ajani Goldmane";"Aleksi Briclot";"White";"M";"Magic 2010", 
    "2";"Angel's Mercy";"Andrew Robinson";"White";"C";"Magic 2010", 
    "3";"Armored Ascension";"Jesper Ejsing";"White";"U";"Magic 2010", 
    "4";"Baneslayer Angel";"Greg Staples";"White";"M";"Magic 2010", 
    "5";"Blinding Mage";"Eric Deschamps";"White";"C";"Magic 2010" 

這裏的輸出的一個示例:

card_no name   artist   color rarity expansion 
    1  Ajani Goldmane Aleksi Briclot White M  Magic 2010 
    0  Angel's Mercy Andrew Robinson White C  Magic 2010 
    0  Armored Ascensi Jesper Ejsing White U  Magic 2010 
    0  Baneslayer Ange Greg Staples White M  Magic 2010 
    0  Blinding Mage Eric Deschamps White C  Magic 2010 

回答

0

我不知道該協議是什麼,回答你自己的問題,這樣的情況下,任何人有這個問題,我會後我剛剛發現的解決方案。 - 我有CARD_NO字段類型爲smallint,我試圖加載一個非整數類型。因此,導入不會加載字符類型(由於引號引起的字符),並且它會移到下一個字段。 - 再次感謝Devart的回答。雖然你的迴應沒有糾正我的問題,但它讓我更加關注自己的問題。

1

所有新行都以一些空格開始。您應該處理它們,指定LINES STARTING BY子句,例如 -

LOAD DATA LOCAL INFILE 'd:\\1\\php43.tmp' 
INTO TABLE 'C:\\xampp\\tmp\\php43.tmp' 
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' 
LINES STARTING BY '  ' TERMINATED BY ','; 
+0

感謝您的答案Devart。不幸的是,仍然出現相同的結果因爲TERMINATED BY在那裏,LINES STARTING BY是不必要的嗎? - 我爲什麼不會看到任何其他card_no數據,但其餘的字段填充正常而感到困惑。 – Troy

+0

我已經添加了LINES STARTING BY,因爲例子在開始的時候會包含一些whire空格。也許MySQL無法正確解析它。嘗試編輯您的CSV文件,刪除所有不必要的空格。 – Devart