2013-07-22 27 views
1

我具有被格式化csv文件如下:負載單個列到MySQL

Rank, URL 
1, www.google.com 
2, www.facebook.com 
etc... 

我有一個表與結構

url, source, date_added 

當每個csv文件具有不同的源ID 。

我使用下面的查詢來加載我的數據

load data local infile 'this.csv' 
into table seeds.seed 
fields terminated by ','; 

這並不完全做我想做的,但它是我的起點。 我想要做的是選擇列2作爲我的URL字段插入,並將每個條目的源設置爲0。所以我在想這樣的事情......

load data local infile 'this.csv' 
into table seeds.seed(url, source) 
select col1, '0' 
fields terminated by ','; 

col1的正確表示法是什麼?我是否缺少查詢的其他關鍵部分?

回答

2
LOAD DATA INFILE 'this.csv' 
    INTO TABLE seed 
    (col1) SET source = 0; 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n'; 

看看SO答案。

This是參考

+0

提供了SO鏈接中的好例子。 –

1

查詢結束了工作

load data local infile 'this.csv' into table seeds.seed 
fields terminated by ',' lines terminated by '\n' 
(@col1,@col2) set [email protected], source='0'; 
+0

很棒的份額..我的+1。 –

1

這是相當棘手的使用LOAD DATA INFILE。上週我花了所有的努力去解決這麼多的錯誤。我會給你我的見解。

我看不到你的create table語句,所以我不知道你使用的是什麼數據類型。 如果你有整數字段,那麼你必須在你的csv文件的每個字段中至少輸入一個0,即使它是錯誤的。您在導入後稍後將其刪除。

如果您的整數字段是一個像主鍵一樣的auto_increment,那麼您可以將這個字段全部省略。不要犯我的錯誤,只留下沒有價值的領域。完全刪除它,否則您的csv將以字段終止字符開始,並且不會導致問題的結束。

負載數據的infile 'FILE.CSV'

成表mytablename通過終止

字段 ''

線通過終止 '\ r \ N' - (對視窗)

忽略1行(field1,field2,field4等) - 你在你的csv列出你的領域。如果你有沒有數據的字段,那麼你可以從你的csv中刪除它們,並從列表中忽略它們。

忽略1行 - 忽略包含字段列表的csv的第一行。

set id = null,

field3 = null;

我將我的auto_increment id字段設置爲null,因爲它不在csv文件中,並且mysql知道它存在以及如何處理它。

同時將field3設置爲null,因爲它沒有值並且已從csv文件中刪除,例如。