2

我想创建一个函数,它将遍历任意查询并根据任意列名执行插入到另一个表中。

例如,这里的想法是输出

(data, data, data...)
(data, data, data...)

最后,我要做一个插入查询。现在,我只想输出行。

编辑:我不能只做一个,INSERT/SELECT因为产品数据和开发数据位于不同的服务器上。所以我必须先将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>
4

2 回答 2

5

数组表示法是你的朋友。

<cfoutput>
<cfloop query = "ProdData">
<cfloop array = "#ProdData.getColumnList()#" index = columnName>
#prodData[columnName][currentrow]#
closing tags and formatting stuff
于 2015-11-03T17:59:08.067 回答
0

您可以从此变量中获取列表

ProdData.columnList

但请注意,列的顺序并没有完全得到尊重,这篇文章可能会有所帮助:http ://www.bennadel.com/blog/644-query-columnlist-does-not-return-true-column-ordering.htm

于 2015-11-03T16:41:27.517 回答