在查询中找不到列,但它在列列表中

时间:2012-09-05 19:24:31

标签: coldfusion railo cfml

我正在尝试使用CFCSV custom tag解析CSV。这是我的CFML代码:

<cfset data = fileRead( "inputtest.csv", "utf-8" ) />
<cfcsv action="parse" data="#data#" variable="csv" hascolumnnames="true" delimiter="," />
<cfloop query="csv">
    <cfoutput>#csv.name#</cfoutput>
</cfloop>

..和我的测试CSV:

"Email","Name","Address1","Address2","City","State","ZIP","Country","Phone"
"somedude@foobar.com","Some Dude","3129 golden bridge ave",,"somecity","somestate","somezip","usa","1234567890"

我得到的错误是:

  在查询中找不到

列[NAME],列是   [电子邮件,名称,地址1,地址,城市,州,邮编,国家,电话]

如果我将循环更改为输出除name之外的任何内容,则可以正常工作。但我无法得到这个名字。即使将列名从Name更改为TheName,也会导致相同的错误:

  在查询中找不到列[THENAME],列是   [电子邮件,TheName,地址1,地址,城市,州,邮编,国家,电话]

但是,我再次输出电子邮件地址或任何其他列没有问题。更改CSV中列的位置和/或从cfloop querycfoutput更改为仅cfoutput query无效。

如果我cfdump查询,则列就在那里。

2 个答案:

答案 0 :(得分:4)

我能够通过在CSV文件的开头添加换行来重现该问题,但是只要解析列标题行时出现问题,您就会看到同样的错误。

答案 1 :(得分:1)

CSV的格式有问题,我无法弄清楚确切的问题。为了解决这个问题,我将CSV重新导出为制表符分隔的文本文件,在Calc中打开它,然后以制表符分隔格式保存。现在它有效。我希望我知道原始文件有什么问题。