Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从一个表中读取并插入到另一个表中-一次一行_C#_Mysql_Sql_.net - Fatal编程技术网

C# 从一个表中读取并插入到另一个表中-一次一行

C# 从一个表中读取并插入到另一个表中-一次一行,c#,mysql,sql,.net,C#,Mysql,Sql,.net,我正在处理一个有数百万行的大型数据库。我想通过C运行一条SQL语句,它从一个数据库中选择120万行,并在解析和修改一些数据后将它们插入到另一个数据库中 我最初希望通过首先运行select语句并通过遍历包含数据的MySqlDataReader对象来解析数据。这将是一个内存开销,所以我决定选择一行,解析它并插入到另一个数据库中,然后移到下一行 如何做到这一点?我已经尝试了MySQL查询的SELECT….INTO语法,但是这似乎仍然选择了所有数据,然后将其插入后面。使用SqlBulkCopy类将数据从

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

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


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

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


我不确定您是否能够向现有表中添加新列。如果可以添加新列,则可以将新列用作标志。它可以被转移到池中

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


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

我不太确定您的错误是什么。对于您的情况,我建议您应该使用“select top 1000”来获取数据,因为逐个插入行的速度非常慢。在这之后,您可以使用“insert into query”,需要注意的是sqlbulkcopy仅适用于sql server,我建议您使用stringbuilder进行sql查询,如果您使用string,对字符串进行concat会有很大的开销。

但我需要一次执行一行,并解析每个值来更改和修改它们。您能否提供一个更改示例,无论是两列求和还是删除值等?