gpt4 book ai didi

c# - 在两个不同的 mysql 数据库中的两个表之间复制大量行

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:02 25 4
gpt4 key购买 nike

我有一个数据库,我们称它为 Database A,另一个在 MySQL 中称为 Database B

我有一条 SQL 语句,它从数据库 A(大约 100 万行)中获取数据,并需要将它们插入数据库 B。

为了从数据库 A 读取数据,我使用了包含 100 万行的 MySqlDataReader。我现在想将它们写入数据库 B。

我尝试做的是遍历数据读取器中的每一行,然后使用简单的 INSERT 存储过程写入数据库。然而,这花费的时间太长了。

我用 C# 研究了 sql 批量数据复制,但是我不想使用外部文件。

我有哪些选择?

最佳答案

像这样的简单查询

 INSERT INTO mysqldb1.table1 SELECT * from mysqldb2.table2

这全部由 MySql 引擎直接执行,避免了来自 MySql 和您的代码的任何数据传递

string cmdText = "INSERT INTO mysqldb1.table1 SELECT * from mysqldb2.table2";
using(MySqlConnection cnn = new MySqlConnection(.....))
using(MySqlCommand cmd = new MySqlCommand(cmdText, cnn))
{
cnn.Open();
int rows = cmd.ExecuteNonQuery();
Console.WriteLine(rows);
}

在更复杂的场景下(比如需要重复操作,目标表最初不存在)可以这样写查询

string cmdText = @"DROP TABLE IF EXISTS mysqldb1.table1;
CREATE TABLE mysqldb1.table1 LIKE mysqldb2.table2;
INSERT INTO mysqldb1.table1 SELECT * from mysqldb2.table2";
using(MySqlConnection cnn = new MySqlConnection(.....))
using(MySqlCommand cmd = new MySqlCommand(cmdText, cnn))
{
......
}

关于c# - 在两个不同的 mysql 数据库中的两个表之间复制大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26299705/

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