2017-03-03 70 views
0
Query: 

    LOAD DATA LOCAL INFILE 'actors.csv' 
    INTO TABLE Actors 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 LINES 
    (ACTOR_ID, FNAME, LNAME); 

CSV File: 
     ACTOR_ID, FNAME, LNAME 
     "66666","Billy","Lou" 
     "77777","Sally","Lou" 
     "88888","Hilly","Lou" 

     mysql> describe Actors; 
      +----------+-------------+------+-----+---------+-------+ 
      | Field | Type  | Null | Key | Default | Extra | 
      +----------+-------------+------+-----+---------+-------+ 
      | ACTOR_ID | char(5)  | NO | PRI |   |  | 
      | FNAME | varchar(20) | NO |  | NULL |  | 
      | LNAME | varchar(20) | NO |  | NULL |  | 
      +----------+-------------+------+-----+---------+-------+ 

      > The output after running query: 

      | 10047 | Shirley  | Jones   | 
      | 10048 | Andre  | Vippolis  | 
      | 66666 | Billy  | Lou" 
      "77777 | 
      | 88888 | Hilly  | "Lou" 
        | 
      +----------+-------------+---------------+ 

我試圖將一個CSV文件放到我的數據庫中。我已經從MySQL教程中獲得了查詢 (除了把我在那裏的值)。當我 運行查詢時,我的數據未正確插入。我已經插入了2行 (10047,10048),然後嘗試從CSV 文件中提取數據,但它無法正確進入。看起來報價 未被正確讀取。但聲明ENCLOSED BY '"' 應處理報價。我在這裏做錯了什麼?將CSV文件放入MySQL的問題

回答

0

CSV文件通常具有一個回車/換行作爲行終止符。例如,如果文件是使用Excel生成的,那麼您幾乎肯定會擁有該文件。

糾正的方法是修改代碼如下:

LOAD DATA LOCAL INFILE 'actors.csv' 
    INTO TABLE Actors 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\r\n' 
    IGNORE 1 LINES 
    (ACTOR_ID, FNAME, LNAME); 

我做了我的大部分CSV導入的那種方式。

+0

這就是我從上述用戶發佈的帖子中收集的內容。我將嘗試並實施該方法。我在Excel中創建CSV文件,然後將它們保存爲CSV文件。在Excel中有多種CSV格式。哪個版本使用/ r/n? – XXIV

+0

我認爲他們都這樣做。 Windows文本文件通常有\ r \ n。 –

+0

它的工作原理。謝謝。但由於某種奇怪的原因,當我保存我的excel文件(不管是什麼CSV格式)時,它會在我的字段中添加額外的引號。這並沒有那麼早。你偶然知道爲什麼它會這樣做嗎?所以它會顯示爲「」Bill「」「」而不是「Bill」。 – XXIV

1

似乎有\r

之間
"Lou" 
     "77777" 

\n

使用文本編輯器來更正。

發現一個相關所以post

+0

我不知道如何做到這一點。你是否說我的CSV文件中有\ r? – XXIV

+0

好像是,使用文本編輯器並啓用特殊字符顯示來檢查並更正它。 – Anil

+0

謝謝。該鏈接很有幫助,另一位用戶幫我完成了我的查詢。 – XXIV