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

C# 如何将性能数据从一个数据库复制到另一个数据库?,c#,sql-server,multithreading,sqlbase,C#,Sql Server,Multithreading,Sqlbase,我有一个概念性的问题 我有两个结构相同的数据库。一个数据库已经包含了大量数据。这些数据应通过选择和插入传输到其他数据库 如何以最高的性能进行数据迁移 我的第一种方法是对列表中的所有表进行排序,其中包含外键的表将存储在引用表的后面。但有了这个解决方案,就不可能启动并行处理 第二个想法是创建一个自定义类型,其中包含被引用表的tablename和tablename,以及一个bool标志,用于存储表中的数据是否已被复制。此类型存储在列表中的每个表中。然后我启动一个新线程,在复制之前检查是否已经为每个表创

我有一个概念性的问题

我有两个结构相同的数据库。一个数据库已经包含了大量数据。这些数据应通过
选择
插入
传输到其他数据库

如何以最高的性能进行数据迁移

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

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

对于这个问题,是否有一种行之有效的方法

任何建议都会有帮助

编辑: 旧数据库是基于SQL的数据库。 新数据库是一个ms sql server数据库。

您可以使用:

1) SQL Server复制

或 2) SQL Server
Merge
语句


您可以使用SQL Server链接的服务器连接不同的数据库平台(例如SQL Server、mysql、db2等)

最佳建议:坚持使用SQLBase。 第二个最好的建议是,通过SQLTalk使用SQLBase卸载命令。这将把重新创建数据库所需的所有DDL语句(包括触发器、存储的进程、索引等)以及所有要加载的数据(如果使用正确的选项)写入外部文件。如果需要使用sql server格式(差别不大),则可以选择通过编程方式编辑此文件。卸载命令有很多选项,这里无法详细说明,但这里有一个语法链接。
请注意,SQLBase v12在最近几个月发布,性能提高了十倍。具有正确的调优和索引等。它将在效率和性能方面超过Sql Server。在100Gb的数据库上,我们的响应时间从50秒增加到了3秒,没有额外的工作

大多数数据库系统都有一个数据库。使用该选项。选择/插入将是最糟糕的方法。我强烈建议为此使用数据库工具。也许“数据库管理员”会是一个更好的地方。问题是,旧数据库是sqlbase数据库,而新数据库是ms sql server。所以现在我正在开发这些“数据库工具”中的一个,就是旧数据库中的数据包含外键,并且它们都被遵守了吗?如果是,则在迁移过程中可以删除目标数据库中的所有索引和外键。完成后,恢复外键和索引。SQL Server复制在我的情况下不起作用,但我将检查是否有链接服务器和SQL Server合并语句的解决方案。谢谢:)请注意,
merge
语句不能与链接服务器一起使用。您必须编写自己的
insert
update
语句您不需要链接服务器。SQLBase UNLOAD将为您编写Insert语句。只需卸载,您就可以准备好重新加载SQlServer所需的所有DDL、DML和数据。