sql server语言 - Coldfusion 8 - cfquery插入语句超时



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

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

我不太确定如何完成这件事。

有人处理过从日志文件导入数千个条目吗?如何克服cfquery标签中的超时

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

看看如何直接从SQL中执行。

  1. 首先将文件复制到本地,可能使用<cfftp/>

  2. 然后,将您的日志文件视为CSV文件,并编写可以通过CF执行的SP,该SP只是将您的日志数据读取到临时表中。这应该是快速的,并避免任何超时。

  3. 你可以有一个单独的步骤(在SQL中,也许)重新组织你的数据一旦它是在临时表。

希望有帮助。

首先检查是db超时,而不是http请求。您是否在群集中一次插入一个recc ?你有要插入的表的索引吗?尝试在一个插入语句中插入多个记录。

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

对于大量数据,根据数据库的不同,您可以考虑创建一个可以一次传递整个数据块的存储过程,比如XML。然后,您的进程将从XML字段执行一条插入语句到表中。

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

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

相关内容

  • 没有找到相关文章

最新更新