将多个相似的 MS-Access 数据库合并为 1 个 SQL 数据库

发布于 2024-10-22 23:51:35 字数 369 浏览 8 评论 0原文

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

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

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

都有数百个表,因此我试图避免手动解决方案。

谢谢你!

I have about 20 access databases, one for each year from 1990-2010. Each databases has pretty much the same tables, but unique data within those tables. (There are some unique tables, but they aren't very important.)

I am using SQL Server Migration Assistant for Access, but so far I can only figure out how to migrate one access database to one SQL database. Is it possible to either:

  1. Use SSMA to import each database to my SQL server, while APPENDING rather than overwriting tables that already exist in the target database
  2. Use SQL to merge 20 databases (after I've imported each one), appending together any similar tables

Each database has a few hundred tables, so I'm trying to avoid a manual solution.

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

辞取 2024-10-29 23:51:35

如果您知道每个数据库中的数据结构都是相同的,则可以执行一些奇特的动态 SQL 和 sp_msforeachtable 来合并每个表,只要它们在每个数据库中具有相同的名称即可。

我在想:

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

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

If you knew your data structure was identical in each DB, you could potentially do some fancy Dynamic SQL and sp_msforeachtable to merge each table, as long as they have the same name in each of the DBs.

I'm thinking something like:

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

This will NOT appropriately handle data type conflicts, and if you have any identity values this won't work at all.

胡渣熟男 2024-10-29 23:51:35

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

you'll have to do each database by hand, but you could try using sql server's data import wizard.

最美不过初阳 2024-10-29 23:51:35

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

Make a proper normalised design of you global db. Then import your 20 MDBs to 20 SQL databases and consolidate by hand or by script, or a combination of both. My guess is that it will be faster by hand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文