sqlite_fdw
SQLite 外部数据包装器
仓库
pgspider/sqlite_fdw
https://github.com/pgspider/sqlite_fdw
源码
sqlite_fdw-2.5.0.tar.gz
sqlite_fdw-2.5.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
sqlite_fdw | 2.5.0 | FDW | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 8640 | sqlite_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 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 2.5.0 | 1817161514 | sqlite_fdw | - |
| RPM | PGDG | 2.5.0 | 1817161514 | sqlite_fdw_$v | - |
| DEB | PGDG | 2.5.0 | 1817161514 | postgresql-$v-sqlite-fdw | - |
构建
您可以使用 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;
用法
创建服务器
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 名称不同)、updatable、truncatable、batch_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 类型 |
|---|---|
| int | bigint |
| text, char, clob | text |
| blob | bytea |
| real, float, double | double precision |
| datetime | timestamp |
| uuid | uuid |
| json, jsonb | json, jsonb |
时间戳可以存储为 TEXT(ISO 格式)或 INT(Unix 纪元,使用 column_type 'INT')。UUID 可以存储为 TEXT(36 字符)或 BLOB(16 字节)。SQLite 数据库文件必须对 PostgreSQL 操作系统用户可读(DML 操作还需可写)。