c# - 如何将高性能数据从一个数据库复制到另一个数据库?

标签 c# sql-server multithreading sqlbase

我有一个概念性的问题。

我有两个具有相同结构的数据库。一个数据库已经包含了很多数据。这些数据应通过SelectInsert 传输到其他数据库。

如何才能以最高性能执行此数据迁移?

我的第一个方法是对列表中的所有表进行排序,其中包含外键的表将存储在引用表的后面。但使用此解决方案将无法启动并行处理。

第二个想法是创建一个自定义类型,其中包含表名和引用表的表名,以及一个 bool 标志,用于存储表中的数据是否已被复制。此类型为列表中的每个表存储。然后我启动一个新线程,在复制之前检查是否已经为每个表创建了引用表。如果没有,我将执行 Thread.Sleep() 之后我将再次检查它。

是否有解决此问题的有效方法?

任何建议都会有所帮助。

编辑: 旧数据库是 SQL Base 数据库。 新数据库是ms sql server数据库。

最佳答案

您可以使用:

1) SQL Server 复制

或者 2) SQL Server Merge语句

您可以使用 SQL Server Linked Servers 连接不同的数据库平台(例如 sql server、mysql、db2 等)

关于c# - 如何将高性能数据从一个数据库复制到另一个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34762889/

相关文章:

c# - Task.Factory.StartNew 在部署时不执行任务

c# - 我应该使用 dynamic_cast<T> 进行复制吗?

php - 用于 MS SQL Server 的 PDO DBLIB 驱动程序 : Cannot find php_pdo_driver. h

multithreading - ChromeDriver 和 SpecRun 问题 : Only one usage of each socket address (protocol/network address/port) is normally permitted

c# - 从进程 ID 获取打开的 xlsx 文件名

sql - 根据列中的数字重复行

sql-server - 将 MS SQL 数据库逆向工程为 ERD

.net - XslCompiledTransform 线程安全

python - 无法使用 process.kill() 或 process.terminate() 或 os.kill() 或使用 psutil 终止 Python 子进程

c# - 反射 - 可空 <datetime> 的 get 方法