我有一个包含大约185k行的二进制文件。C#
在几秒钟内解析文件。MSSQL
用该数据更新表的最佳方法是什么?
我试过的:
- 最简单的方法 - 读取二进制行,解析,更新表。整个过程大约需要 2 天时间来更新所有数据。
- 合并 200 个更新查询并立即将它们发送到 MSSQL。在这种情况下,更新需要 8 到 10 小时。
- 将 500 多个查询合并为一个。工作速度更快,但不时会丢弃超时异常,因此某些更新不会通过。
关于如何加快更新过程的任何建议?
我有一个包含大约185k行的二进制文件。C#
在几秒钟内解析文件。MSSQL
用该数据更新表的最佳方法是什么?
我试过的:
关于如何加快更新过程的任何建议?
不确定您是否真的想通过 C# 执行此操作:可能想要使用BULK INSERT并为其提供一个数据格式正确的文件。
使用SqlBulkCopy
(到临时表)后跟MERGE
.
大容量复制方法可以使用来自 .NET 客户端的“推送”来有效地传输数据。使用BULK INSERT
需要从服务器“拉”(以及所需的本地文件访问)。
然后该MERGE
命令(在 SQL Server 2008+ 中)可用于根据所需规则将临时表中的数据插入/更新/更新插入到目标表中。由于此时数据完全在数据库中,因此此操作将尽可能快。使用MERGE
也可能导致优于许多单独命令的性能优势,甚至是同一事务中的那些。
也可以看看: