自动将新数据从 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 表

如何使用 MYSQL 查询访问 Ms-Access 数据库

从 MS Access 导入数据

如何通过编码将数据从 MS Access 导入 Sql Server [关闭]

将特定数据从 csv 文件导入 MS Access

使用VB将数据从Excel导入Ms Access