sql-server - 如何使用 SSIS 将多个 Access 数据库导入 SQL Server

标签 sql-server ms-access ssis

我有一个包含 300 多个 Access 数据库的文件夹(由我无法控制的程序编写)。它们都具有相同的结构,只是一张表。我正在将数据导入到 SQL Server (2005) 中的表中。使用导入向导效果很好,但它一次只能处理一个 Access 数据库。

我已经搜索并搜索了一种方法来执行此操作,并且我认为我正在使用 ForEach 循环容器内的数据流任务。但是,我只看到了一种使用 Excel 文件或平面文件作为源来执行此操作的方法。

非常感谢任何帮助。

最佳答案

对于一次性任务,您可以使用一次性 VBA 代码。

创建一个新数据库,并在该数据库中创建一个指向您的 SQL Server 表的 ODBC 链接。

然后创建一个与此类似的新 Access 查询:

INSERT INTO remote_table (<field list>)
SELECT <field list>
FROM YourTable In 'C:\SourceFolder\db1.mdb';

如果字段在源和目标中的名称相同,则可以省略 <field list> .

INSERT INTO remote_table
SELECT *
FROM YourTable In 'C:\SourceFolder\db1.mdb';

在最好的情况下,Access 字段值将与 SQL Server 字段类型兼容。否则,您将不得不使用 Access 函数将字段值转换为 SQL Server 兼容类型。

一旦您完成排序,从您的 Access 数据库文件上传数据的 VBA 程序将变得快速而简单:

Sub Test()
Const cstrExtension As String = "mdb"
Const cstrFolder As String = "C:\SourceFolder\"
Dim db As DAO.database
Dim strDbFile As String
Dim strInsert As String

strInsert = "INSERT INTO remote_table (<field list>)" & vbCrLf & _
    "SELECT <field list>" & vbCrLf & _
    "FROM YourTable In 'DB_FILE';"
Set db = CurrentDb
strDbFile = Dir(cstrFolder & "*." & cstrExtension)
Do While Len(strDbFile) > 0
    db.Execute Replace(strInsert, DB_FILE, _
        cstrFolder & strDbFile), dbFailOnError
    strDbFile = Dir()
Loop
Set db = Nothing
End Sub

关于sql-server - 如何使用 SSIS 将多个 Access 数据库导入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444098/

相关文章:

c# - 反序列化 Json Web API 响应 - 嵌套对象

sql-server - 读取派生列表达式

sql - 在 SQL Server XML 数据类型上使用 LIKE 语句

sql-server - 将单元格区域用作与 SQL Server 的数据连接中的值

sql-server - 您的代理计算机上未安装 SQL Powershell 模块。请按照以下步骤执行此任务

ms-access - Access SELECT 语句和硬编码值

MySQL 触发器更新 SQL Server 表

sql - 在Delphi 7中运行更新查询时,如何解决封闭数据集错误?

ms-access - 如何循环访问MS Access DB中的所有表

sql-server - 无法将 SSIS 包部署到 Windows 10 Pro 上的 SQL Server 2016 Express