tds_fdw
tds_fdw : Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server)
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 8620 | tds_fdw
|
tds_fdw
|
2.0.5 |
FDW
|
PostgreSQL
|
C
|
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
--s-d-r
|
No
|
Yes
|
No
|
Yes
|
yes
|
no
|
| Relationships | |
|---|---|
| See Also | mysql_fdw
oracle_fdw
babelfishpg_tsql
babelfishpg_tds
wrappers
odbc_fdw
jdbc_fdw
db2_fdw
|
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PGDG
|
2.0.5 |
18
17
16
15
14
|
tds_fdw |
- |
| RPM | PGDG
|
2.0.5 |
18
17
16
15
14
|
tds_fdw_$v |
- |
| DEB | PGDG
|
2.0.5 |
18
17
16
15
14
|
postgresql-$v-tds-fdw |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
el8.x86_64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
el8.aarch64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
el9.x86_64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
el9.aarch64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
el10.x86_64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
el10.aarch64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
d12.x86_64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
d12.aarch64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
d13.x86_64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
d13.aarch64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
u22.x86_64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
u22.aarch64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
u24.x86_64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
u24.aarch64
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
PGDG 2.0.5
|
Source
Install
Make sure PGDG repo available:
pig repo add pgdg -u # add pgdg repo and update cacheInstall this extension with pig:
pig install tds_fdw; # install via package name, for the active PG version
pig install tds_fdw -v 18; # install for PG 18
pig install tds_fdw -v 17; # install for PG 17
pig install tds_fdw -v 16; # install for PG 16
pig install tds_fdw -v 15; # install for PG 15
pig install tds_fdw -v 14; # install for PG 14Create this extension with:
CREATE EXTENSION tds_fdw;Usage
tds_fdw: Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server)
Create Server
CREATE EXTENSION tds_fdw;
CREATE SERVER mssql_svr
FOREIGN DATA WRAPPER tds_fdw
OPTIONS (servername '127.0.0.1', port '1433',
database 'tds_fdw_test', tds_version '7.1');Server Options: servername (server address or DSN, supports comma-separated failover list), port, database, dbuse (0 for direct connection, non-0 for dbuse()), tds_version (protocol version), language, character_set, msg_handler (notice or blackhole), sqlserver_ansi_mode, fdw_startup_cost, fdw_tuple_cost.
Create User Mapping
CREATE USER MAPPING FOR postgres
SERVER mssql_svr
OPTIONS (username 'sa', password 'secret');For Azure SQL databases, use the format username@servername for the username option.
Create Foreign Table
Map a remote table directly:
CREATE FOREIGN TABLE mssql_table (
id integer,
name varchar(255),
value numeric(10,2)
)
SERVER mssql_svr
OPTIONS (schema_name 'dbo', table_name 'mytable');Or use a custom SQL query:
CREATE FOREIGN TABLE mssql_query (
id integer,
name varchar(255),
total numeric(10,2)
)
SERVER mssql_svr
OPTIONS (query 'SELECT id, name, SUM(amount) AS total FROM orders GROUP BY id, name');Table Options: table_name or query (one required, mutually exclusive), schema_name, match_column_names (map by name vs position), use_remote_estimate, row_estimate_method (execute or showplan_all).
Column Options: column_name (remote column name if different from local).
Query and Debug
SELECT * FROM mssql_table WHERE id > 100;
-- View the remote query sent to SQL Server
EXPLAIN (VERBOSE) SELECT * FROM mssql_table WHERE id > 100;Import Foreign Schema
IMPORT FOREIGN SCHEMA dbo
FROM SERVER mssql_svr
INTO public;