[英]Load Data Infile OPTIONALLY ENCLOSED BY not working as expected
許多相關的票務和Tut網站,但不幸的是,到目前為止,還沒有任何解決方案對我有用,這花了幾個小時。
我有很多需要插入到mysql數據庫中的csv文件,使用“加載文件”可以非常快速,輕松地完成它。
但是,它偶然發現了一個部分:示例csv行:
絕對的,格蘭,Anakie,“酷綜合症,超級酷”
我使用的代碼是:
$q = "load data infile '$file' into table $table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n';";
mysql_query($q, $db);
我希望從中得到4個字段,但最終得到5個,它將引號內的逗號視為分隔符。 我認為“可選封閉”的目的是抓住這些情況?
我嘗試過切換命令終止字段和opt所包圍字段的順序。 試圖使它成為封閉。 嘗試不轉義“,也/” /”,嘗試使用2個單引號而不是雙引號;但是我仍然無法理解我希望將“ Cool Synd,Super Cool”作為一個字段。
有人知道我在做什么錯嗎?
這是我的表結構:
我只是將所有數據都放在這里,然后對其進行處理,然后將字段移至相關表,並將其轉換為正確的格式。 有問題的列是“所有者”。 我在這里將其更改為文本類型,因為這是其他解決方案,但是無論是文本,char,varchar等,其工作方式都相同。
(在Ubuntu服務器14.4,Apache / 2.4.7,PHP 5.5.9上工作)
我有這個確切的問題,並在這里解決了:
https://arstechnica.com/civis/viewtopic.php?t=366658
只需顛倒順序即可。
$q = "load data infile '$file' into table $table
FIELDS OPTIONALLY ENCLOSED BY '"'
TERMINATED BY ','
LINES TERMINATED BY '\n';";
mysql_query($q, $db);
您也不需要在雙引號前加反斜杠
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.