Csv
如果 csv 的分隔符出現在值中,我該怎麼辦?
假設,我的 csv 文件包含
"item_name","price","description" mobile,500$,It has many features (e.g., camera, big display, etc)
我想使用 mysql 命令將這個 csv 數據文件載入到 mysql 數據庫中
load data local infile 'file.csv' into table table fields terminated by ',' lines terminated by '\n' (column1, column2, column3,...)
你也可以說通過
"
和使用enclosed by '"'
mysql的選項來包圍每個值。但是封閉每個值對我來說都是成本。
description
如果存在讀取這種類型的 csv 的解決方案,其中一列包含"
但不是全部,我只能附上值。
將欄位分隔符從逗號更改為文件中不存在的內容。如果您可以控制創建 CSV 文件的內容,那麼這應該不會太難。
使用
csvkit
,如果最後一個欄位被正確引用,則可以這樣做:$ cat file.csv "item_name","price","description" mobile,500$,"It has many features (e.g., camera, big display, etc)" $ csvformat -D@ file.csv item_name@price@description mobile@500$@It has many features (e.g., camera, big display, etc)
或者,沒有
csvformat
,假設每行的前兩個逗號是真正的分隔符:$ sed -e 's/,/@/' -e 's/,/@/' file.csv
這不需要引用最後一個欄位。
將此重定向到一個新文件,然後使用
load data local infile 'newfile.csv' into table table fields terminated by '@' lines terminated by '\n' (column1, column2, column3,...)