0

我有大约 20 个访问数据库,从 1990 年到 2010 年每年一个。每个数据库都有几乎相同的表,但这些表中的数据是唯一的。(有一些独特的表,但它们不是很重要。)

我正在使用 SQL Server Migration Assistant for Access,但到目前为止,我只能弄清楚如何将一个 access 数据库迁移到一个 SQL 数据库。是否可以:

  1. 使用 SSMA 将每个数据库导入我的 SQL 服务器,同时追加而不是覆盖目标数据库中已经存在的表
  2. 使用 SQL 合并 20 个数据库(在我导入每个数据库之后),将任何相似的表附加在一起

每个数据库都有几百个表,所以我试图避免手动解决方案。

谢谢!

4

3 回答 3

1

您必须手动完成每个数据库,但您可以尝试使用 sql server 的数据导入向导。

于 2011-03-15T19:54:39.710 回答
1

如果您知道每个 DB 中的数据结构是相同的,那么您可能会做一些花哨的动态 SQL 并sp_msforeachtable合并每个表,只要它们在每个 DB 中具有相同的名称。

我在想类似的事情:

DECLARE @SQL Varchar(max)

SET @SQL ='
SELECT *
INTO MergedDb.?
FROM DB1.?
UNION ALL
SELECT *
FROM DB2.?
UNION ALL
SELECT *
FROM DB3.?
...'

exec sp_MSforeachtable @SQL

这将不能适当地处理数据类型冲突,如果您有任何标识值,这根本不起作用。

于 2011-03-15T20:00:38.743 回答
1

对全局数据库进行适当的规范化设计。然后将您的 20 个 MDB 导入 20 个 SQL 数据库,并通过手动或脚本或两者的组合进行整合。我的猜测是手动会更快。

于 2011-03-15T20:01:13.273 回答