将表从 ODBC 导出到另一个访问文件中



我有一个带有ODBC连接的sql服务器数据库。我希望能够将表从 sqlserver 导入访问数据库。

我已经能够将一个表导入访问,然后将其导出到另一个访问文件中。

这样:

DoCmd.TransferDatabase acImport, "ODBC Database", _
"ODBC connectionstring" _
, acTable, "SOURCE1", "DEST1", False, True
DoCmd.TransferDatabase acExport, "Microsoft Access", _
"P:Main-Copy.accdb" _
, acTable, "DEST1", "DEST2"

是否有可能一步完成而不是两步?

甚至考虑一个纯 SQL 解决方案,其中在同一操作查询中连接到 SQL Server 数据库和远程访问数据库。以下示例假设 MSSQL 和 MS Office 安装在同一位版本(32/64 位(上,以便通过 DAO 进行适当连接。

追加查询 (假设所有字段在两个表之间对齐,否则选择特定列(

INSERT INTO [P:Main-Copy.accdb].DEST2
SELECT *
FROM [ODBC;DRIVER={SQL Server};Server=INSTANCEmyServer;database=dbName;UID=XX;PWD=***].SOURCE1;

生成表查询(假设不存在先前的表,否则需要DROP TABLE ...(

SELECT *
INTO [P:Main-Copy.accdb].DEST2
FROM [ODBC;DRIVER={SQL Server};Server=INSTANCEmyServer;database=dbName;UID=XX;PWD=***].SOURCE1;

Robert,

是否要复制数据?如果不是,那么简单地将表附加到第二个数据库(在您的示例中(是一种选择吗?在这种情况下,数据永远不会移动到 Access 数据库中,而是在请求时提取(即双击数据库容器中的表(。如果表附加到第二个数据库中,则可以运行"生成表"查询将数据带到本地,这将是一个步骤。

您还可以将数据从 SQL Server 推送到数据库,前提是 SQL Server 可以访问正确的数据库路径。

我以稍微圆润的方式解决了这个问题

在第一个数据库中使用它。在外部数据库中调用 sub

Set appAccess = CreateObject("Access.Application")     
appAccess.OpenCurrentDatabase "DATABASE PATH", False     
appAccess.Run "ImportTableToExternalDB", "Clients"     
Set appAccess = Nothing

以及外部数据库中的此方法。哪个进行实际转移

Public Sub ImportTableToExternalDB(TableName As String)
DoCmd.TransferDatabase acImport, "ODBC Database", _
"ODBC Connection String" _
, acTable, TableName,  TableName, False, True
End Sub

感谢大家的帮助

编辑:我决定采用Parfait的答案,因为它在各个方面都更简单,更高效。

最新更新