自动将新数据从 MS Access 数据库导入 SQL Server
Posted
技术标签:
【中文标题】自动将新数据从 MS Access 数据库导入 SQL Server【英文标题】:Automatically import new data from a MS Access database into SQL Server 【发布时间】:2018-09-14 14:06:30 【问题描述】:我有一个全天插入数据的 Access 2003 数据库,我想转换为 SQL Server 数据库。有许多不同的工具和进程插入到 Access 数据库中,因此需要进行大量修改才能将它们全部更改为插入 SQL Server。
我知道微软有 a tool 将 Access 数据库转换为 SQL Server 数据库,但据我所知,它不能自动运行,也不能只导入新数据,因为最后一次“合并”(如有错误请指正)
解决这个问题的最佳方法是什么?也许是某种脚本?
谢谢。
【问题讨论】:
您使用的是什么版本的 ms-access?如果它至少是 2010 或更高版本,您可以创建事件驱动的宏,其功能类似于 SQL 服务器中的trigger
,这篇文章可能会有所帮助(***.com/questions/5623440/ms-access-trigger),您可以自动将数据从 Access 插入到您的 SQL服务器
我正在使用 Access 2003
也许此工具适用于您的情况,“SQL Server Migration Assistant for Access (AccessToSQL)”(docs.microsoft.com/en-us/sql/ssma/access/…)
Microsoft 的 SSMA 的问题是我看不到自动运行迁移的方法。据我所知,它被用作从 Access 到 SQL 的一次性转换
@Andre Access端只有insert,SQL会只读
【参考方案1】:
Access端只有insert,SQL会是只读的
然后我会这样做:
将 SQL Server 表链接到 Access 数据库中 运行 INSERT 查询以将新数据复制到服务器表中。这假定所有表都有主键。查询将例如看起来像这样(空气代码):
INSERT INTO dbo_Customers
SELECT src.*
FROM Customers AS src LEFT JOIN dbo_Customers AS tgt
ON src.ID = tgt.ID
WHERE tgt.ID IS NULL
Customers
是本地表,dbo_Customers
是服务器表。
查询从Customers
中选择dbo_Customers
中不存在的所有记录。
由于其他几个进程访问原始数据库,最好设置一个新的 Access 数据库,链接原始表和服务器表,并在新数据库中运行 INSERT 查询。您不希望在“数据”数据库中运行任何代码。
它可以是自动化的,例如使用Form_Timer
过程。
【讨论】:
这似乎是我正在寻找的。谢谢!以上是关于自动将新数据从 MS Access 数据库导入 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
自动将不同的 Excel 文件导入 MS Access 2010 表