odbc_fdw

Foreign data wrapper for accessing remote databases using ODBC

Overview

PackageVersionCategoryLicenseLanguage
odbc_fdw0.5.1FDWPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
8520odbc_fdwNoYesNoYesNoYes-
Relatedwrappers multicorn jdbc_fdw mysql_fdw oracle_fdw tds_fdw db2_fdw postgres_fdw

Version

TypeRepoVersionPG VerPackageDeps
EXTPGDG0.5.11817161514odbc_fdw-
RPMPGDG0.5.11817161514odbc_fdw_$vunixODBC
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PGDG MISS
el8.aarch64PGDG MISS
el9.x86_64PGDG MISS
el9.aarch64PGDG MISS
el10.x86_64PGDG MISS
el10.aarch64PGDG MISS
d12.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS

Install

You can install odbc_fdw directly. First, make sure the PGDG repository is added and enabled:

pig repo add pgdg -u          # Add PGDG repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install odbc_fdw;          # Install for current active PG version
pig ext install -y odbc_fdw -v 17  # PG 17
pig ext install -y odbc_fdw -v 16  # PG 16
pig ext install -y odbc_fdw -v 15  # PG 15
pig ext install -y odbc_fdw -v 14  # PG 14
dnf install -y odbc_fdw_17       # PG 17
dnf install -y odbc_fdw_16       # PG 16
dnf install -y odbc_fdw_15       # PG 15
dnf install -y odbc_fdw_14       # PG 14

Create Extension:

CREATE EXTENSION odbc_fdw;

Usage

odbc_fdw: Foreign data wrapper for accessing remote databases using ODBC

Create Server

Connect using a DSN defined in your ODBC configuration:

CREATE EXTENSION odbc_fdw;

CREATE SERVER odbc_server
  FOREIGN DATA WRAPPER odbc_fdw
  OPTIONS (dsn 'test');

Or specify connection attributes directly without a DSN:

CREATE SERVER odbc_server
  FOREIGN DATA WRAPPER odbc_fdw
  OPTIONS (
    odbc_DRIVER 'MySQL',
    odbc_SERVER '192.168.1.17',
    encoding 'iso88591'
  );

Server Options: dsn (ODBC data source name), driver (ODBC driver name, required if no DSN), odbc_* (driver-specific attributes), encoding (remote database character encoding).

Prefix driver-specific options with odbc_. Attributes DSN, DRIVER, UID, and PWD are automatically uppercased.

Create User Mapping

CREATE USER MAPPING FOR postgres
  SERVER odbc_server
  OPTIONS (odbc_UID 'root', odbc_PWD '');

Create Foreign Table

CREATE FOREIGN TABLE odbc_table (
  id integer,
  name varchar(255),
  description text,
  users float4,
  created timestamp
)
SERVER odbc_server
OPTIONS (
  odbc_DATABASE 'mydb',
  schema 'test',
  sql_query 'SELECT id, name, description, created, users FROM test.mytable',
  sql_count 'SELECT count(id) FROM test.mytable'
);

SELECT * FROM odbc_table;

Table Options: schema (remote schema), table (remote table name), sql_query (custom SQL query, overrides table), sql_count (custom count SQL).

Import Foreign Schema

IMPORT FOREIGN SCHEMA test
  FROM SERVER odbc_server
  INTO public
  OPTIONS (odbc_DATABASE 'mydb');

Last Modified 2026-03-12: add pg extension catalog (95749bf)