sqlite_fdw

SQLite 外部数据包装器

概览

扩展包名版本分类许可证语言
sqlite_fdw2.5.0FDWPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
8640sqlite_fdw-
相关扩展mysql_fdw file_fdw postgres_fdw wrappers multicorn odbc_fdw jdbc_fdw duckdb_fdw

break on el8 due to sqlite-lib version low

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG2.5.01817161514sqlite_fdw-
RPMPGDG2.5.01817161514sqlite_fdw_$v-
DEBPGDG2.5.01817161514postgresql-$v-sqlite-fdw-
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 MISS
d12.aarch64PGDG MISS
d13.x86_64PGDG MISS
d13.aarch64PGDG MISS
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u22.x86_64PGDG MISS
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u22.aarch64PGDG MISS
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u24.x86_64PGDG MISS
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u24.aarch64PGDG MISS
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0

构建

您可以使用 pig build 命令构建 sqlite_fdw 扩展的 RPM / DEB 包:

pig build pkg sqlite_fdw         # 构建 RPM / DEB 包

安装

您可以直接安装 sqlite_fdw 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install sqlite_fdw;          # 当前活跃 PG 版本安装
pig ext install -y sqlite_fdw -v 17  # PG 17
pig ext install -y sqlite_fdw -v 16  # PG 16
pig ext install -y sqlite_fdw -v 15  # PG 15
pig ext install -y sqlite_fdw -v 14  # PG 14
dnf install -y sqlite_fdw_17       # PG 17
dnf install -y sqlite_fdw_16       # PG 16
dnf install -y sqlite_fdw_15       # PG 15
dnf install -y sqlite_fdw_14       # PG 14
apt install -y postgresql-17-sqlite-fdw   # PG 17
apt install -y postgresql-16-sqlite-fdw   # PG 16
apt install -y postgresql-15-sqlite-fdw   # PG 15
apt install -y postgresql-14-sqlite-fdw   # PG 14

创建扩展

CREATE EXTENSION sqlite_fdw;

用法

sqlite_fdw: SQLite 外部数据包装器

创建服务器

CREATE EXTENSION sqlite_fdw;

CREATE SERVER sqlite_server FOREIGN DATA WRAPPER sqlite_fdw
  OPTIONS (database '/path/to/database.db');

服务器选项: database(必填,SQLite 文件路径)、updatable(默认 true)、truncatable(默认 false)、keep_connections(默认 true)、batch_size(默认 1)、force_readonly(默认 false)。

由于 SQLite 没有认证模型,无需 CREATE USER MAPPING

创建外部表

CREATE FOREIGN TABLE remote_data (
  id integer OPTIONS (key 'true'),
  name text,
  created timestamp OPTIONS (column_type 'INT'),
  data bytea
)
SERVER sqlite_server
OPTIONS (table 'data_table');

表选项: table(SQLite 表名,如与 PostgreSQL 名称不同)、updatabletruncatablebatch_size

列选项: column_name(映射到不同的 SQLite 列名)、column_type(SQLite 亲和类型:INT 用于时间戳纪元,BLOB 用于 UUID)、key(标记为主键,UPDATE/DELETE 必需)。

CRUD 操作

SELECT * FROM remote_data WHERE id > 100;
INSERT INTO remote_data (id, name) VALUES (1, 'test');
UPDATE remote_data SET name = 'updated' WHERE id = 1;
DELETE FROM remote_data WHERE id = 1;

导入外部模式

IMPORT FOREIGN SCHEMA public
  FROM SERVER sqlite_server INTO local_schema;

导入选项: import_default(默认 false)、import_not_null(默认 true)。

数据类型映射

SQLite 类型PostgreSQL 类型
intbigint
text, char, clobtext
blobbytea
real, float, doubledouble precision
datetimetimestamp
uuiduuid
json, jsonbjson, jsonb

时间戳可以存储为 TEXT(ISO 格式)或 INT(Unix 纪元,使用 column_type 'INT')。UUID 可以存储为 TEXT(36 字符)或 BLOB(16 字节)。SQLite 数据库文件必须对 PostgreSQL 操作系统用户可读(DML 操作还需可写)。


最后修改 2026-03-14: update extension metadata (953cbd0)