首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个表中读取并插入到另一个表中-一次一行

问从一个表中读取并插入到另一个表中-一次一行
EN

Stack Overflow用户
提问于 2014-10-10 16:26:48
回答 3查看 630关注 0票数 1

我正在处理一个有数百万行的巨大数据库。我想通过C#运行一条SQL语句,它从一个数据库中选择120万行,并在解析和修改一些数据后将它们插入到另一个数据库中。

我最初希望这样做:首先运行select语句,然后通过遍历包含数据的MySqlDataReader对象来解析数据。这将是一个内存开销,所以我决定选择一行,解析它并插入到另一个数据库中,然后移到下一行。

如何做到这一点?我尝试过MySQL查询的SELECT....INTO语法,但是这似乎仍然选择了所有数据,然后将其插入到后面。

EN

回答 3

Stack Overflow用户

发布于 2014-10-10 16:32:49

使用SqlBulkCopy类将数据从一个源移动到另一个源

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy%28v=vs.110%29.aspx

票数 0
EN

Stack Overflow用户

发布于 2014-10-10 16:51:52

我不确定您是否能够向现有表中添加新列。如果能够添加新列,则可以使用新列作为标志。它可以是"TRANSFERED(boolean)“。

您将使用条件TRANSFERED=FALSE一次选择一行,然后执行该过程。在处理该行之后,您应该以TRANSFERED=TRUE的身份进行更新。

或者,您必须在现有的表中有一个唯一的id列。创建一个临时表,该表将存储已处理行的id,这样您就可以知道哪些行已处理或未处理。

票数 0
EN

Stack Overflow用户

发布于 2014-10-10 17:22:55

我不太确定你的错误是什么。对于您的情况,我建议您应该使用'select TOP1000‘来获取数据,因为一个接一个地插入行非常慢。之后,你可以使用insert into query,需要注意的是sqlbulkcopy只适用于sql server,我建议你使用string big来进行sql查询,因为如果你使用string,它将有很大的连接字符串的开销。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26294997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档