在Coldfusion中使用动态命名变量的列名

在Coldfusion中使用动态命名变量的列名,coldfusion,cfquery,dynamic-variables,cfloop,Coldfusion,Cfquery,Dynamic Variables,Cfloop,我想创建一个函数,该函数将循环通过任意查询,并根据任意列名执行插入到另一个表中的操作 例如,这里的想法是输出 (data, data, data...) (data, data, data...) 最后,我将执行一个插入查询。现在,我只想输出行 编辑:我不能只进行插入/选择,因为prod数据和dev数据位于不同的服务器上。因此,我必须首先将prod服务器上的表中的数据收集到一个CF查询对象中,然后在其中循环并插入到dev服务器上的表中 代码: 您可以从该变量获取列表 ProdData.colu

我想创建一个函数,该函数将循环通过任意查询,并根据任意列名执行插入到另一个表中的操作

例如,这里的想法是输出

(data, data, data...)
(data, data, data...)
最后,我将执行一个插入查询。现在,我只想输出行

编辑:我不能只进行插入/选择,因为prod数据和dev数据位于不同的服务器上。因此,我必须首先将prod服务器上的表中的数据收集到一个CF查询对象中,然后在其中循环并插入到dev服务器上的表中

代码:


您可以从该变量获取列表

ProdData.columnList
但请注意,列的顺序并没有得到完全尊重,
本文可能会有所帮助:

数组表示法是您的朋友

<cfoutput>
<cfloop query = "ProdData">
<cfloop array = "#ProdData.getColumnList()#" index = columnName>
#prodData[columnName][currentrow]#
closing tags and formatting stuff

您可以使用getColumnNames以正确的顺序获取它们,就像我在代码中所做的那样。我相信这是因为CF 8左右。好的,对不起。所以你的困难是得到列的值,是吗?如果是这样的话,您可以使用evaluate函数:并执行类似EvaluateProdData的操作。columnNames[ColumnNumber]evaluate确实有效,但我对此提出了广泛的警告。idk如果有效,但已尝试使用索引循环查询并获得如下值:ProdData[columnNames[ColumnNumber]][i]。您必须使用从1到recordCount的索引进行循环,而不是循环查询。我不确定它是否会起作用。虽然这是可能的,但您能否不直接使用insert/SELECT…(插入/选择)插入数据。。。?目标表结构是否相同?有。这是因为生产数据和开发数据位于不同的服务器上。所以,我不能直接插入到a中,从b中选择*。我将更新我的问题以反映这一点。您使用的是什么RDBMS?SQL Server将允许您链接服务器,因此您可以在其中一个服务器上运行查询,以便在另一个服务器上检索数据。@ScottStroz此处不允许链接服务器:。严密的安全措施。而且他们永远不会见面。我敢肯定,说得委婉一点;-顺便说一句,getColumnNames是一个未记录的方法。不幸的是,我上次检查时没有直接的替代方法,但是您可以使用getMetaDataqueryName执行相同的操作。函数返回一个结构数组。列名位于名称键下。使用数组循环,即currentArrayElement.nameBingo!我不知道cfloop有currentrow。从技术上讲,是cfquery有currentrow。这就是我的想法。但是,我能够在
<cfoutput>
<cfloop query = "ProdData">
<cfloop array = "#ProdData.getColumnList()#" index = columnName>
#prodData[columnName][currentrow]#
closing tags and formatting stuff