如何使用具有超过1000条记录的ColdFusion进行批量插入?

Dee*_*dhy 2 sql sql-server coldfusion batch-processing

我有一个包含大约3000条记录的电子表格.我需要将所有这些数据插入到新表中.所以在这种情况下使用批量插入机制是相当不错的.

所以我尝试了一个简单的例子,

 <cfquery datasource="cse">
    insert into Names
    values
    <cfloop from="1" to="3000" index="i">
        ('#i#')
        <cfif i LT 3000>, </cfif>
    </cfloop>
</cfquery>
Run Code Online (Sandbox Code Playgroud)

但由于SQL Server 2008一次只允许1000次批量插入,因此我收到错误.

那么如何制作单独的批次,每次包含999条记录并且可以一次执行?

Jar*_*ede 5

您可以使用BULK INSERT应该处理极大数据集的语句.

数据需要采用CSV格式,您必须为文件位置创建变量.

  <cfquery datasource="cse">
    BULK INSERT Names
    FROM '#variables.sCSVLocation#'
  </cfquery>
Run Code Online (Sandbox Code Playgroud)

如果您有理由不使用BULK INSERT并希望将其分解为999的循环,那么您必须计算出数据集中有多少"记录",除以999以获得您的次数'我必须循环它.