gpt4 book ai didi

c# - 使用 C# 处理每一行并将其复制到新表

转载 作者:行者123 更新时间:2023-11-30 14:00:44 24 4
gpt4 key购买 nike

我有一个包含几百万条记录的 MSSQL 2008 表。我需要遍历每一行,修改一些数据,并使用每天执行的 C# 应用程序将更新的记录复制到新表。

我曾尝试使用 ADO.NET 实体执行此操作,但此方法存在内存问题,更不用说它非常慢了。我已经阅读了有关将一个表复制到另一个表的批量复制库和仅限 SQL 的方法,但它们都不涉及在复制记录之前修改记录。我需要找到一种更好的方法来执行此操作。

最佳答案

当你提到内存问题时,我猜你正试图将数百万行加载到内存中,处理它们,然后将它们写回数据库。您可以通过“流式传输”数据而不是完全加载数据来避免这种情况。 SqlDataReader 将为您处理缓冲,因此在读取方面您可以执行一个简单的 WHILE 循环,逐行获取。您似乎已经进行了实际转换,因此您需要做的就是将结果写回数据库。恕我直言,最快的方法是在数据表中存储多个结果的缓冲区(从 100 开始,逐步计算并查看最佳位置),然后使用 将该数据表推送到数据库中SqlBulkCopy 类。冲洗并重复。

PS:听起来像是一个“有趣”的问题。你有任何样本数据坐在某处来测试吗? 5 小时对于一开始看起来微不足道的事情来说听起来很长,然后又重复了 2000 万次,几乎什么也没有加起来。更具体地说,我想知道 RTF 端的数据有多“大”:这些值平均约为 2k 还是 200k?你在什么样的硬件上运行它?

关于c# - 使用 C# 处理每一行并将其复制到新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com