如何忽略CSV文件中的双引号?

如何忽略CSV文件中的双引号?,csv,coldfusion,Csv,Coldfusion,我正在使用ColdFusion将CSV文件导入MySQL数据库,我的代码运行良好,但我有一个问题。我想忽略单词周围的双引号。所以我的csv看起来像这样:“约翰”,“马克”,“彼得”。每次在数据库中插入CSV后,我的单词都会被双引号括起来。ColdFusion中有没有可以用来防止双引号的命令?我试着用修剪,但没用。如果你知道有什么可以帮忙的,请告诉我 您可以使用命名方便且易于猜测的函数替换双引号。然而。。。你可能不想把它们全都扔掉。双引号字符串分隔符是CSV处理带有嵌入逗号或新行字符的数据值的方式

我正在使用ColdFusion将CSV文件导入MySQL数据库,我的代码运行良好,但我有一个问题。我想忽略单词周围的双引号。所以我的csv看起来像这样:“约翰”,“马克”,“彼得”。每次在数据库中插入CSV后,我的单词都会被双引号括起来。ColdFusion中有没有可以用来防止双引号的命令?我试着用修剪,但没用。如果你知道有什么可以帮忙的,请告诉我

您可以使用命名方便且易于猜测的函数替换双引号。然而。。。你可能不想把它们全都扔掉。双引号字符串分隔符是CSV处理带有嵌入逗号或新行字符的数据值的方式(请参阅)。如果你知道你不会有任何这些,我看不出摆脱它有什么害处


也就是说。。。一个更好的方法可能是一开始就不把引号放在那里,而不是把它们放在那里,然后需要把它们扔掉。如果可能的话,我会采用这种方法。

您可以使用
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#">
如果您这样做,那么您将需要通过http使您的CSV可用。在本地开发环境中,这很好,但不要在生产环境中这样做。因此,我只建议一次性导入(在受限环境中)或数据可公开访问时使用此方法


否则,按照答案进行操作。

在字段上循环,并按照以下方式进行操作:

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


这将删除字段中的周围引号和unescape引号。

如果能够得到对否决票的解释,那将是一件非常好的事情。TBH我对仅仅为了利用
内置的CSV解析而发出HTTP请求的想法犹豫不决。对于一个简单的问题,这是一个非常沉重的解决方案。我同意。它的实现也很差。你最好使用一个复杂的CSV解析器来解决这个问题。就我个人而言,我可能希望通过Sequel Pro或Heidi SQL将它直接导入到一个临时MySQL表中,然后从那里开始。希望我在回答中明确表示,这不是我在生产中推荐的解决方案。但是,如果您得到了一个CSV文件,您需要将其快速导入到CF可以使用的格式,那么这是一个潜在的快速且肮脏的选项。
<cfset field = reReplace(field, '^"', '')>
<cfset field = reReplace(field, '"$', '')>
<cfset field = replace(field, '\"', '"', 'ALL')>