2012-10-08 142 views
0

我想做一些非常簡單的事情。 我只想將excel數據導出爲CSV以便將其放入Mysql數據庫。將CSV導出到MySQL

這是一個巨大的Excel,所以我無法輕鬆管理異常。

我的問題是,當我救我XSLX爲CSV,它把我的"只有在有列逗號分隔的列或是否已經有一個"所以我有類似的東西在我的CSV:

col1 | col2 | col3 => col1,col2,col3 
col1 | co,l2| col3 => col1,"co,l2",col3 
col1 |"col"2| col3 => col1,"""col""2",col3 
col1 |  | col3 => col1,,col3 

所以我嘗試了很多TING將它轉換爲SQL,但我找不到一個好方法。

我在Excel 2007和SQL工作要CSV有這樣的配置:

Columns separated with: , 
Columns enclosed with: " 
Columns escaped with: \ 
Lines terminated with: auto 
+3

MySQL'LOAD DATA LOCAL INFLILE'有一個'COLUMNS SEPARATED BY'參數,您甚至可以在不轉換的情況下使用它。 – Kevin

+0

如果使用正確的參數,MySQL不應該在引號內查看逗號 –

+1

這完全正常/理智的CSV規則。如果沒有理由添加引號,則不會。 (如果數據包含引號或逗號,則必須添加引號 - 分隔符。請參閱相關維基百科文章。) – 2012-10-08 03:52:12

回答

1

所以你要load your data使用

LOAD DATA FROM INFILE 'filename.csv' 
INTO TABLE tablename 
COLUMNS TERMINATED BY ',' 
     OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 

OPTIONALLY加載文件時實際上是忽略,或者即使你沒有指定OPTIONALLY,它仍然被視爲可選項,所以用一個更好的方式來描述它。這意味着列值可能會被括在引號內,但不需要即可。請注意afaik。 Excel不使用\來轉義值。

如果您需要一些其他格式用於導入到MySQL以外的目的,那麼您可以使用您喜歡的設置從MySQL重新導出數據。當writing a file,省略OPTIONALLY將爲每個值開啓報價。