我想创建一个函数,它将遍历任意查询并根据任意列名执行插入另一个表的操作。在Coldfusion中使用来自动态命名变量的列名
例如,这里的想法是将输出
(data, data, data...)
(data, data, data...)
最终,我会做一个插入查询。现在,我只想输出行。
编辑:我不能只是做一个INSERT/SELECT
,因为prod数据和dev数据在不同的服务器上。因此,我必须首先将prod服务器上的表中的数据收集到CF查询对象中,然后遍历它并插入到dev服务器上的表中。
代码:
<cffunction name="copyProdToDev">
<cfargument name="devDatasource" >
<cfargument name="prodDataSource" type="string">
<cfargument name="devTableName" type="string">
<cfargument name="prodTableName" type="string">
<cfargument name="dateColumnName" default="none">
<cfquery name="ProdData" datasource="#prodDatasource#" timeout="60">
SELECT *
FROM #prodTableName#
</cfquery>
<cfset columnNames = ProdData.getColumnNames()>
<cfset numColumns = ArrayLen(columnNames)>
<cfloop query="#ProdData#">
(
<cfloop index="colNumber" from="1" to="#ArrayLen(columnNames)-1#">
<cfoutput><dynamic column name for colNumber>,</cfoutput>
</cfloop>
<cfoutput><dynamic column name for numColumns></cfoutput>
)<br />
</cfloop>
</cffunction>
虽然这是可能的,你能不能直接用INSERT/SELECT插入数据...?目标表结构是否相同?有 – Leigh
有。这是因为生产数据和开发数据位于不同的服务器上。所以,我不能只从'b'插入select *。我会更新我的问题以反映这一点。 – abalter
您使用的是什么RDBMS? SQL Server将允许你链接服务器,所以你可以在一个将检索另一个数据的查询上运行查询。 –