2015-08-28 106 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报价。

相关问题