2015-05-17 26 views
1

我已經導出CSV文件與在phpMyAdmin四列蒙山這些選項:用比我輸入的表少的列輸入csv文件?

Columns separated with: , 
Columns enclosed with: " 
Columns escaped with: " 
Lines terminated with: AUTO 

現在我想將這個文件導入到表17列!? 因此只有四列將被填充,其他列將保持空白。

+1

你是什麼實際問題?你嘗試過什麼,結果如何? –

+0

我試着@have建議,它給我錯誤#1064 –

+0

@JetonThaçi: - 我修改查詢,現在試試。我建議你先嚐試沒有LINES TERMINATED BY ...子句。讓MySQL爲你自動檢測這個。 如果這不起作用,請再次嘗試,這次僅使用\ n或僅\ r。 對不起 - 我不能提供一個明確的答案,你將不得不測試.. – HaveNoDisplayName

回答

1

您可以在從文件導入數據的時候調整列名稱,並在將表中的數據導入時通過將用戶變量分配給用戶變量來使用用戶變量放棄輸入值。

LOAD DATA INFILE「file.txt的」:

AS PER MYSQL DOCUMENTATION

也可以通過將其分配給用戶變量 和未分配變量以表列丟棄的輸入值INTO TABLE t1(column1,@dummy, column2,@dummy,column3);

LOAD DATA INFILE 'filename.csv' 
INTO TABLE sqlTable(column1, column2, column3, column4, @NotInsert2, @NotInsert2... till @NotInsert13); 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 

所以你的情況,只要指定四柱名稱和使用任何用戶變量,而不是其他列的名稱,以便在列表列的總數將等於17

編輯 - 讓我們用實例理解: -

考慮,我們需要加載文件,內容如下: 文件名:example.csv

col-2,col-3,col-4 
a,2,3 
b,4,5 
c,6,7 

案例: - 當csv文件具有更少數量的有針對性的表列的

表結構:表名 COL-1 COL-2 COL-3 COL-4

考慮,COL-1是汽車增量和csv中未提供。

LOAD DATA INFILE ‘path/to/example.csv’ 
INTO TABLE tablename 
FIELDS TERMINATED BY ‘,’ 
LINES 
TERMINATED BY ‘\n’ 
IGNORE 1 LINES (col-2,col-3,col-4) set col-1=null; 

傳遞空值將使col-1採用自動遞增值。 使用SET,您可以將值分配給那些在csv中不可用並且不爲空的列。

欲瞭解更多信息refer here

+0

成功導入csv文件,但不插入1560行,它插入37865行,他們都是空的。任何想法爲什麼這是發生? –

+0

您使用FIELDS TERMINATED BY',' 作者:'' LINES終止'\ n'或不是,以便它不會插入csv中沒有數據的所有行 – HaveNoDisplayName

+0

否我沒有使用該行。它應該如何?在查詢後使用 –

0

試試這個:

LOAD DATA LOCAL INFILE 'XYZ.csv' 
    INTO TABLE tickets 
FIELDS terminated by ',' 
ENCLOSED BY '\"' lines terminated by '\n' IGNORE 1 LINES 
    (column1, column2, column3, column4)(choose your data columns) "; 
+0

它給了我錯誤#1064。 –

+0

我認爲@HaveNoDisplayName的解決方案除了最後一行之外正在工作:'FIELDS TERMINATED BY',' 封閉''' 'AUTO'的行終止,根據我的csv選項沒有正確設置。 –

+0

我試圖@havenodisplayname建議,它給我錯誤#1064 –