2015-08-28 95 views
0

我正在用ColdFusion導入MySQL數據庫中的CSV文件,我的代碼工作正常,但我有一個問題。我想忽略單詞的雙引號。所以我的csv看起來像這樣:「John」,「Mark」,「Peter」。每次在數據庫中插入CSV後,我都會在我的單詞旁邊加上雙引號。 ColdFusion中是否有可用於防止雙引號的命令?我試圖使用修剪,但沒有奏效。如果你知道任何可以幫助的請告訴我。如何忽略CSV文件中的雙引號?

回答

2

您可以使用cfhttp將CSV文件讀取到cfquery對象中。例如:

my.csv文件內容:

"forename","surname","id" 
"fred","blogs",1000 
"jim","smith",2000 

然後,您可以讀取它,像這樣:

<cfhttp url="http://scratch.localhost/my.csv" method="get" name="mydata"> 
<cfdump var="#mydata#"> 

MYDATA將是一個CFQUERY對象,所以可以只遍歷它。雙引號將被刪除,它看起來像:

FORENAME ID SURNAME 
1 fred  1000 blogs 
2 jim  2000 smith 

如果你這樣做,那麼你將需要可通過HTTP您的CSV。在本地開發環境中,這很好,但不要在生產中這樣做。所以我只會推薦一個關閉進口的產品(在受限制的環境中),或者無論如何都可以公開訪問數據。

否則請用Adam Cameron's答案。

+2

TBH我只是爲了利用內置於''中的CSV分析來創建HTTP請求的想法而猶豫不決。對於一個簡單問題來說,這是一個非常繁重的解決方案 –

+0

我同意。它的實施也很差。對於這個問題,您最好使用複雜的CSV解析器。 – Alex

+0

就我個人而言,我可能會考慮通過Sequel Pro或Heidi SQL將它直接導入臨時MySQL表中並從那裏開始。希望我在答覆中明確指出,這不是我在生產中推薦的解決方案。但是,如果您已獲得一個CSV文件,並且您很快需要將其導入CF可以使用的格式,那麼這是一個潛在的快速和骯髒的選項。 –

-1

那麼你可以通過使用方便地命名的&來替代雙引號,這個功能很快就會被replace()所代替。但是......你可能不想擺脫所有這些。雙引號字符串分隔符是CSV如何處理帶有嵌入逗號或換行符的數據值(請參閱CSV RFC)。如果你知道你不會有任何這些,我可以看到擺脫沒有傷害。

這就是說...一個更好的方法可能是不把報價放在那裏,而不是讓他們和需要擺脫它們。這是的方法,我會採取與此,如果poss。

+1

對於downvote會有一個很好的解釋。 –

1

遍歷領域做沿着這些路線的東西:

<cfset field = reReplace(field, '^"', '')> 
<cfset field = reReplace(field, '"$', '')> 
<cfset field = replace(field, '\"', '"', 'ALL')> 

這將刪除該領域內的周圍引號和UNESCAPE報價。

相關問題