C# 将大数据迁移到新数据库
我想使用我用C编写的解决方案将大量数据从SQL Server传输到MongoDB,大约8000万条记录。 我想一次传输200000条记录,但我的问题是跟踪已经传输的内容。通常情况下,我会这样做:C# 将大数据迁移到新数据库,c#,sql-server,cursor,C#,Sql Server,Cursor,我想使用我用C编写的解决方案将大量数据从SQL Server传输到MongoDB,大约8000万条记录。 我想一次传输200000条记录,但我的问题是跟踪已经传输的内容。通常情况下,我会这样做: Gather IDs from destination to exclude from source scope Read from source (Excluding IDs already in destination) Write to destination Repeat 问题是我在C中构建了
Gather IDs from destination to exclude from source scope
Read from source (Excluding IDs already in destination)
Write to destination
Repeat
问题是我在C中构建了一个字符串,其中包含目标中存在的所有ID,目的是从源选择中排除这些ID,例如
select * from source_table where id not in (<My large list of IDs>)
因此,基本上,我想知道如何迭代大量数据,而无需一次选择所有数据,或使用大字符串过滤数据。任何帮助都将不胜感激。需要更多的代表发表评论,但如果您按id列排序,您可以将where子句更改为
select * from source_table where *lastusedid* < id and id <= *lastusedid+200000*
这将为您提供所需的200000范围,您只需要存储单个整数有许多不同的方法,但我建议您首先不要尝试重新发明轮子,而是查看现有的程序。 有许多程序设计用于在不同数据库之间导出和导入数据,有些程序非常灵活且昂贵,但其他程序提供免费选项,大多数DBMS程序都包含一些内容 备选案文1: 使用SQL Server Management Studio SSMS导出向导 这允许您导出到不同的源。如果需要,您甚至可以编写复杂的查询。更多信息请点击此处: 备选案文2: 按ID升序导出数据。 将上次导出的ID存储在表中 导出下一组数据,其中ID>lastportedid 备选案文3: 在备份表中创建数据的副本。
从这个表中导出,并在导出记录时将其删除。我希望有某种方法可以使用类似光标或异步的方法一次遍历N个记录,但在谷歌搜索了很多次之后,我空手而归。我必须接受将最后使用的ID存储在单独表中的方法。谢谢你的帮助。
select * from source_table where *lastusedid* < id and id <= *lastusedid+200000*