使用 ColdFusion 解析 CSV

Parsing CSV with coldfusion

我想创建一个新函数,它将获取 CSV 并从中解析数据,然后将其写入数据库。 到目前为止,我设法得到了这个:

<cfhttp method="get" url="C:\ColdFusion11\path\test.csv" name="csvData"> 
<cfoutput>#isQuery(csvData)#</cfoutput>

<cfloop query="csvdata" >
    <p>
<cfloop list="#csvdata.columnlist#" index="i">
    <cfoutput>
            #csvdata['#i#'][currentRow]# - 
    </cfoutput>    
</cfloop>
</p>
</cfloop>

我收到这个错误: 变量 CSVDATA 未定义
我不知道为什么会报这个错,因为我的var是在cfhttp里面定义的(还是我哪里做错了?)

这段代码对我有用:

<cffile action="read" file="C:\foo\bar\test.csv" variable="csvfile">

<cfloop index="index" list="#csvfile#" delimiters="#chr(10)##chr(13)#"> 
    <cfquery name="importcsv" datasource="#systemDSN#"> 
         INSERT INTO csvdemo (test1,test2,test3,test4) 
         VALUES 
                  ('#listgetAt('#index#',1, ',')#', 
                   '#listgetAt('#index#',2, ',')#', 
                   '#listgetAt('#index#',3, ',')#', 
                   '#listgetAt('#index#',4)#' 
                  ) 
   </cfquery> 
</cfloop>

<cfquery name="rscsvdemo" datasource="#systemDSN#"> 
         SELECT * FROM csvdemo 
</cfquery> 
<cfdump var="#rscsvdemo#">

这是一个旧话题,但仍然有效。 cfml 中没有捆绑简单的 csv 工具,但是有很多方法可以解析 csv, 一个简单的技巧是使用 cfhttp,但您需要能够通过 http(s)

加载它
 <cfhttp method="get" name="CSVQry"
    url="#siteAddress#/data/table.csv"
    firstRowAsHeaders="true"
    columns="#COLUMNLIST#"
    delimiter="#DELIMITER#">
 </cfhttp>

一个更通用的解决方案是 Ben Nadels 的 csv 解析器,我真的可以推荐它。 https://www.bennadel.com/blog/483-parsing-csv-data-using-coldfusion.htm