我有一个包含 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 db 文件上传数据的 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/

10-16 19:34
查看更多