PostgreSQL odbc_fdw(64 位)连接到 MS Access(64 位)

PostgreSQL odbc_fdw (64bit) Connection to MS Access (64bit)

我正在尝试 link 将现有的 MS Access 2013 表添加到 PostgreSQL 12 数据库中,这两个数据库都是 64 位版本并使用 odbc_fdw 安装在小型网络上。数据库位于 windows 网络上的不同机器上。我安装并检查了系统 DSN(使用 pyodbc)。 在 PostgreSQL 中,我能够创建扩展;外部数据包装器;外部服务器和外部 Table,并创建用户映射,但是当尝试 运行 查询时,我得到“错误:连接到驱动程序”。根据我发现的少量文献,我尝试了很多选择但没有任何运气。我可以使用 ocdb_fwd 直接连接到 MySQL 服务器,但我不知道如何使用 MSAccess 进行连接。 如果有人可以帮助我弄清楚如何将 MSAccess 连接到 fdw,我将不胜感激。 这些是我在 PostgreSQL 中的基本设置:

CREATE FOREIGN DATA WRAPPER odbc_data_wrapper
    HANDLER public.odbc_fdw_handler
    VALIDATOR public.odbc_fdw_validator;

CREATE SERVER odbc_msaccess
    FOREIGN DATA WRAPPER odbc_data_wrapper
    OPTIONS (dsn 'msaccess'); 

CREATE USER MAPPING FOR postgre SERVER odbc_msaccess
    OPTIONS("ocdb_UID" 'Admin', "ocdb_pwd" '');

CREATE FOREIGN TABLE test(
    id integer NOT NULL,
    name character varying NOT NULL
    )
    SERVER odbc_msaccess
    OPTIONS (layer 'test',
    sql_query 'SELECT id, name FROM test); 

DSN: msaccess working. Tested on pyodbc
odbc_data_wrapper: tested just fine connecting a MySql database

数据库在不同的机器上

是的,这可能行不通。

PostgreSQL 需要直接访问 Microsoft Access 数据库,因此它要么必须在同一台机器上,要么在网络共享上。但是如果你 运行 它在网络共享上,你需要确保用户 运行 PostgreSQL 可以访问网络共享,DSN 安装在 运行 PostgreSQL 机器上,并且您正确地引用了网络路径。