PostgreSQL odbc_fdw64位与MS Access的连接64位

问题描述

我正在尝试将现有的MS Access 2013表链接到Postgresql 12数据库(64位版本,并使用odbc_fdw安装在小型网络上)。数据库位于Windows网络上的不同计算机上。我已经安装并检查了系统DSN(使用pyodbc)。 在Postgresql中,我可以创建扩展名。外国数据包装器;外部服务器和外部表,并创建用户映射,但是尝试运行查询时出现“错误:连接到驱动程序”。在我发现没有运气的小文献之后,我尝试了许多选择。我可以使用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的计算机上,并且正确地引用了网络路径。