2013-03-12 48 views
1

嗨,我知道這個問題不僅僅是爲了我的緣故,而是爲了每個使用mysql LOAD DATA INFILE的人。mysql加載數據infile插入雙引號

我只想知道爲什麼我每次使用加載數據infile導入數據時都會收到此(「」)雙引號?來自csv的數據已成功添加到數據庫中,但實例中有一個雙引號。例如。

「value1」| 「value2」| 「value3」

任何幫助?這是我的mysql腳本。

echo $mysql = "LOAD DATA LOCAL INFILE '".$path ."' 
     REPLACE INTO TABLE table 
     FIELDS 
      TERMINATED BY ',' 
     LINES 
      TERMINATED BY '\\n' 
     IGNORE 1 LINES 
     (`column1`, `column2`, `column3`, `column4`..)"; 

     $query = mysqli_query($link, $mysql) or die(mysqli_error($link)); 

感謝

+0

不是我已經完全糾正它。我必須使用ENCLOSED BY'\''和反斜槓BUT,然後它會跳過其他所有行,所以現在我正在查看是否可以找出它,如果我這樣做,我會發布它,如果是這樣,請更新所以我可以想出它。謝謝! – Bodine 2013-04-22 16:46:09

回答

3

我從你的問題,你的INFILE值是沿着這一線的東西猜測,

"column1","column2","column3","column4" 
"column1a","column2a","column3a","column4a" 

因爲在你的mysql的語句,你只說,字段終止於,它會讀取一個值到mysql引擎找到一個,,因此qoutes。

用於聲明字段是否被某個東西包圍的mysql語法如下所示;

FIELDS ENCLOSED BY '"' 

新的查詢會是什麼樣子,

"LOAD DATA LOCAL INFILE '".$path ."' 
    REPLACE INTO TABLE table 
    FIELDS 
     TERMINATED BY ',', 
     ENCLOSED BY '"' 
    LINES 
     TERMINATED BY '\\n' 
    IGNORE 1 LINES 
    (`column1`, `column2`, `column3`, `column4`..)" 

這告訴MySQL的引擎來尋找人物的"之間,並採取該值作爲字段值。

您可以在mysql網站上閱讀更多關於它的信息。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

希望這有助於!

+0

我收到語法錯誤,意外'''(T_CONSTANT_ENCAPSED_STRING),期待','或';'在 – phphopzter 2013-03-12 13:55:35

+0

嘗試逗號後的字段終止,我的mysql是生鏽的,我會更新我的答案 – ShaShads 2013-03-12 13:56:17

+4

你需要逃避「。所以ENCLOSED由''''''' – 2016-03-31 20:38:04