Sql server Coldfusion 8-cfquery insert语句超时

Sql server Coldfusion 8-cfquery insert语句超时,sql-server,coldfusion,insert,timeout,cfquery,Sql Server,Coldfusion,Insert,Timeout,Cfquery,我正在构建一个脚本,它使用cfhttp读取分隔的日志文件。这些日志文件往往相当大,因此当我尝试将日志文件中的数据插入到我创建的表中时,我的cfquery INSERT语句超时 因此,我的想法是一次插入200-300条记录,然后以某种方式刷新insert语句计时器,然后导入下一组200-300条记录 我不完全确定如何做到这一点 每个人都处理过从日志文件中导入数千个条目吗?您是如何克服cfquery标记中的超时的。首先检查是数据库超时,而不是http请求。您是否在cfloop中一次插入一个rec?您

我正在构建一个脚本,它使用cfhttp读取分隔的日志文件。这些日志文件往往相当大,因此当我尝试将日志文件中的数据插入到我创建的表中时,我的cfquery INSERT语句超时

因此,我的想法是一次插入200-300条记录,然后以某种方式刷新insert语句计时器,然后导入下一组200-300条记录

我不完全确定如何做到这一点


每个人都处理过从日志文件中导入数千个条目吗?您是如何克服cfquery标记中的超时的。

首先检查是数据库超时,而不是http请求。您是否在cfloop中一次插入一个rec?您是否有要插入的表的索引?尝试在一条insert语句中插入多条记录

首先检查是数据库超时,而不是http请求。您是否在cfloop中一次插入一个rec?您是否有要插入的表的索引?尝试在一条insert语句中插入多条记录

如果可以将文件加载到会话变量中,则可以使用每次调用cfloop的startrow和endrow属性一次解析行。然后,您将设置脚本以设置计数器,进行第一次传递,更新计数器,然后使用cfhttp再次将信息发送到您的进程,传递udpated计数器。然后,该过程将只解析这些行并进行插入

对于大量数据,并且根据数据库,您可以考虑创建一个存储过程,您可以一次将整个块传递,例如XML。然后,存储过程将从XML字段向表中插入一条insert语句


这将加快处理速度,并且不会导致CF超时。

如果可以将文件加载到会话变量中,则可以使用cfloop每次调用的startrow和endrow属性一次解析行。然后,您将设置脚本以设置计数器,进行第一次传递,更新计数器,然后使用cfhttp再次将信息发送到您的进程,传递udpated计数器。然后,该过程将只解析这些行并进行插入

对于大量数据,并且根据数据库,您可以考虑创建一个存储过程,您可以一次将整个块传递,例如XML。然后,存储过程将从XML字段向表中插入一条insert语句


这将加快处理速度,并且不会导致CF超时。

我不能100%确定这是否适合您,但对于将日志文件数据放入数据库的核心任务,我将跳过ColdFusion解析数据的步骤

请看一下直接从SQL执行此操作

  • 首先在本地复制文件,可以使用

  • 然后,将日志文件视为CSV文件,您可以通过将日志数据读入临时表的CF执行。这应该很快,避免任何超时

  • 然后,您可以使用一个单独的步骤(也许是在SQL中)在数据位于临时表中后重新组织数据


  • 希望有帮助

    我不能100%确定这对您是否有效,但对于将日志文件数据放入数据库的核心任务,我将绕过ColdFusion解析数据的步骤

    请看一下直接从SQL执行此操作

  • 首先在本地复制文件,可以使用

  • 然后,将日志文件视为CSV文件,您可以通过将日志数据读入临时表的CF执行。这应该很快,避免任何超时

  • 然后,您可以使用一个单独的步骤(也许是在SQL中)在数据位于临时表中后重新组织数据


  • 希望有帮助

    Cold Fusion可以传递SQL server使用的批插入命令,您只需确保所使用的dB服务器上允许使用该功能。我建议将文件放在本地,并使用SQL server的批插入功能。

    Cold Fusion可以传递SQL server使用的批插入命令,您只需确保所使用的dB服务器上允许该功能。我建议将文件放在本地,并使用SQL server的批插入功能。

    您是说我可以在cfquery标记内部使用批量插入功能吗?我现在就试试看。我所做的是使用cfhttp将文件读入查询对象。然后,我使用cfoutput查询命令将cfquery insert包装到命令中。它进行插入,但就像我说的,它超时了。你是说我可以在cfquery标记内部使用批量插入吗?我现在就试试看。我所做的是使用cfhttp将文件读入查询对象。然后,我使用cfoutput查询命令将cfquery insert包装到命令中。它执行插入操作,但正如我所说,它超时了。我尝试了批量插入命令,但在获取本地存储的文件时遇到问题。我得到以下错误:执行数据库查询时出错。[Macromedia][SQLServer JDBC驱动程序][SQLServer]无法大容量插入,因为无法打开文件“C:\websites\mywebsite.com\htdocs\files\demo.txt”。操作系统错误代码3(系统找不到指定的路径)。如何修复此问题?我尝试了批量插入命令,但在获取本地存储的文件时遇到问题。我得到以下错误:执行数据库查询时出错。[Macromedia][SQLServer JDBC驱动程序][SQLServer]无法大容量插入,因为无法打开文件“C:\websites\mywebsite.com\htdocs\files\demo.txt”。操作系统错误代码3(系统找不到指定的路径)。我怎样才能解决这个问题?