【发布时间】:2016-01-13 09:30:46
【问题描述】:
我有一个概念性问题。
我有两个结构相同的数据库。一个数据库已经包含大量数据。这些数据应通过Select 和Insert 传输到其他数据库。
如何才能以最高性能进行此数据迁移?
我的第一种方法是对列表中的所有表进行排序,其中包含外键的表将存储在引用表的后面。但是使用此解决方案将无法启动并行处理。
第二个想法是创建一个自定义类型,其中包含表名和引用表的表名以及一个布尔标志,用于存储表中的数据是否已被复制。此类型为列表中的每个表存储。然后我启动一个新线程,在复制之前检查是否已经为每个表创建了引用的表。如果没有,我执行Thread.Sleep(),然后我会再次检查。
有没有很好的方法来解决这个问题?
任何建议都会有所帮助。
编辑: 旧数据库是 SQL Base 数据库。 新数据库是一个 ms sql server 数据库。
【问题讨论】:
-
大多数数据库系统都有bulk copy mechanism。使用它。
-
SELECT/INSERT 是最糟糕的方法。我强烈建议为此使用数据库工具。也许“数据库管理员”会是一个更好的地方。 dba.stackexchange.com
-
问题是,旧数据库是sqlbase数据库,新数据库是ms sql server。所以现在我正在开发这些“数据库工具”之一
-
旧数据库中的数据是否包含外键并且它们都被遵守了?如果是,对于您的迁移,您可以删除目标数据库中的所有索引和外键。完成后 - 恢复外键和索引。
标签: c# sql-server multithreading sqlbase