微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不耗尽内存的情况下运行包含许多插入的大型脚本?

如何解决如何在不耗尽内存的情况下运行包含许多插入的大型脚本?

sql Server 2005 的最大批处理大小为 65,536 * 网络数据包大小 (NPS),其中 NPS 通常为 4KB。可以达到 256 MB。这意味着您的插入语句平均为 5.8 KB。这似乎不对,但其中可能有多余的空间或不寻常的东西。

我的第一个建议是在每个 INSERT 语句之后放置一个“GO”语句。这会将您的单批 45,000 个 INSERT 语句分成 45,000 个单独的批次。这应该更容易消化。小心,如果其中一个插入失败,您可能很难找到罪魁祸首。您可能想通过交易保护自己。如果您的编辑器具有良好的搜索和替换功能(这将允许您搜索和替换 \r\n 等返回字符)或宏工具,您可以快速添加这些语句。

第二个建议是使用向导直接从 Excel 导入数据。该向导在幕后为您构建一个小 SSIS 包,然后运行它。不会有这个问题。

解决方法

问题:

我有一个脚本,其中包含来自 select 语句的大约 45,000 个插入。当我尝试运行它时,我收到一条错误消息,指出我的内存已用完。我怎样才能让这个脚本运行?

语境:

  1. 添加了一些新的数据字段,以使应用程序与客户端使用的另一个应用程序配合得很好。
  2. 从客户端获得了一个数据电子表格,其中包含将当前数据项映射到这些新字段的值的数据。
  3. 将电子表格转换为插入语句。
  4. 如果我只运行其中的一些语句,它会起作用,但整个脚本不会。
  5. 不,没有错别字。

如果有不同的方式我应该加载这些数据,请随时责备我并让我知道。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。