gpt4 book ai didi

c# - 如何使用 insert 语句将数百万不同 RDBMS 的数据插入 SQL Server 数据库?

转载 作者:IT王子 更新时间:2023-10-28 23:43:54 29 4
gpt4 key购买 nike

到目前为止,我的 SQL Server 中有两个数据库,每个数据库都包含 1 个表。

我有 2 个数据库,如下所示:

1)DB1(MySQL)

2)DB2(甲骨文)

现在我要做的是用来自 MySQL 的 Db1 的数据填充我的 SQL Server db1 数据库表,如下所示:

Insert into Table1 select * from Table1

Select * from Table1(Mysql Db1) - Data coming from Mysql database

Insert into Table1(Sql server Db1) - Insert data coming from Mysql database considering same schema

我不想使用 sqlbulk 复制,因为我不想逐 block 插入数据。考虑到数百万数据,我想一次插入所有数据,因为我的操作不仅限于在数据库中插入记录。因此,用户必须坐等很长时间,比如在数据库中逐 block 插入数百万数据,然后再次等待我的进一步操作,这也是长时间运行的操作。

因此,如果我加快了这个过程,那么考虑到所有记录都在我的 1 个本地 sql server 实例中,我的第二个操作也可以加快。

这可以在 C# 应用程序中实现吗?

更新:我研究了链接服务器,因为 @Gordon Linoff 建议我可以使用链接服务器来实现这种情况,但根据我的研究,我似乎不能通过代码创建链接服务器。

我想在 ado.net 的帮助下完成此操作。

这正是我想要做的:

假设我有 2 个不同的客户端 RDBMS,其中有 2 个数据库和客户端中的一些表。

所以数据库是这样的:

Sql Server :

Db1

Order
Id Amount
1 100
2 200
3 300
4 400


Mysql or Oracle :

Db1:

Order
Id Amount
1 1000
2 2000
3 3000
4 400

现在我想比较源 (SQL Server) 和目标数据库(MySQL 或 Oracle)中的 Amount 列。

我将用于连接这 2 个不同的 RDBMS 数据库表以比较 Amount 列。

在 C# 中,我可以做的是在我的数据表(在内存中) 中逐 block 获取记录,然后借助代码比较这些记录,但考虑到数百万条记录,这将花费很多时间.

所以我想做一些比这更好的事情。

因此我在想,我在 2 个数据库中的本地 SQL 服务器实例中取出这 2 个 RDBMS 记录,然后创建基于 Id 连接这 2 个表的连接查询,然后利用 DBMS 处理能力可以比较这数百万高效记录。

像这样的查询可以有效地比较数百万条记录:

select SqlServer.Id,Mysql.Id,SqlServer.Amount,Mysql.Amount from SqlServerDb.dbo.Order as SqlServer
Left join MysqlDb.dbo.Order as Mysql on SqlServer.Id=Mysql.Id
where SqlServer.Amount != Mysql.Amount

当我的本地服务器实例中有这 2 个不同的 RDBMS 数据时,上面的查询有效:SqlServerDb 和 MysqlDb,这将获取以下数量不匹配的记录:

所以我试图将这些记录从源(Sql server Db)获取到 Amount 列值不匹配的 MySQL。

预期输出:

Id      Amount
1 1000
2 2000
3 3000

那么有什么办法可以实现这个场景呢?

最佳答案

SELECT 端,使用 SELECT ... INTO OUTFILE ...< 创建一个 .csv 文件(制表符分隔)/p>

INSERT 端,使用 LOAD DATA INFILE ...(或任何目标机器语法)。

一次完成所有代码可能比分 block 更容易编码,并且可能(或可能不会)运行得更快。

关于c# - 如何使用 insert 语句将数百万不同 RDBMS 的数据插入 SQL Server 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47814248/

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