2014-10-10 98 views
1

我正在处理一个包含数百万行的巨大数据库。我想通过C#运行SQL语句,C#从一个数据库中选择120万行,并在解析和修改某些数据后将它们插入到另一个数据库中。从一张表中读取数据并插入另一个数据表中 - 每次只读一行

我原本想这样做,首先运行select语句并通过迭代包含数据的MySqlDataReader对象来解析数据。这将是一个内存开销,所以我决定选择一行,解析它并插入另一个数据库,然后移到下一行。

这怎么办?我已经尝试了MySQL查询的SELECT....INTO语法,但是这似乎仍然选择所有数据,然后将其插入。

回答

0

我不知道,如果你能到一个新列添加到现有的表。如果您可以添加新列,则可以使用新列作为标志。它可以是“TRANSFERED(布尔)”。

您将使用条件TRANSFERED = FALSE一次选择一行并执行该过程。在处理该行之后,应该更新为TRANSFERED = TRUE。

或者,您现有的表格中必须有一个唯一标识列。创建一个临时表,它将存储处理过的行的ID,这样你将知道哪些行被处理或不是

0

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

相关问题