file_fdw
Server files
file_fdw 模块提供了外部数据包装器 file_fdw ,可用于访问服务器文件系统中的数据文件,或者在服务器上执行程序并读取其输出。数据文件或程序输出必须采用 COPY FROM 可读取的格式;详见 COPY 。当前对数据文件的访问为只读。 使用此包装器创建的外部表可以具有下列选项: 请注意,虽然 COPY 允许诸如 HEADER 这样的选项在没有对应值的情况下指定,但外部表选项语法要求在所有情况下都必须提供一个值。要启用通常写成不带值的 COPY 选项,可以传入值 TRUE ,因为所有…
当前查看 PostgreSQL 18。
中文定义与说明
外部数据包装器 file_fdw。
同版本中文手册节选
file_fdw 模块提供了外部数据包装器
file_fdw,可用于访问服务器文件系统中的数据文件,或者在服务器上执行程序并读取其输出。数据文件或程序输出必须采用
COPY FROM 可读取的格式;详见 COPY。当前对数据文件的访问为只读。
使用此包装器创建的外部表可以具有下列选项:
请注意,虽然 COPY 允许诸如 HEADER 这样的选项在没有对应值的情况下指定,但外部表选项语法要求在所有情况下都必须提供一个值。要启用通常写成不带值的
COPY 选项,可以传入值 TRUE,因为所有这类选项都是布尔值。
使用此包装器创建的外部表的列可以具有下列选项:
说明
file_fdw 模块提供了外部数据包装器 file_fdw ,可用于访问服务器文件系统中的数据文件,或者在服务器上执行程序并读取其输出。数据文件或程序输出必须采用 COPY FROM 可读取的格式;详见 COPY 。当前对数据文件的访问为只读。 使用此包装器创建的外部表可以具有下列选项: 请注意,虽然 COPY 允许诸如 HEADER 这样的选项在没有对应值的情况下指定,但外部表选项语法要求在所有情况下都必须提供一个值。要启用通常写成不带值的 COPY 选项,可以传入值 TRUE ,因为所有这类选项都是布尔值。 使用此包装器创建的外部表的列可以具有下列选项:
- 接口类别
- 外部数据包装器
- 处理函数或例程
- file_fdw_handler
- 记录的回调
- 10
接口与能力边界
矩阵记录此源码构建实际注册的回调。注册表明实现了相应接口钩子;操作是否允许还取决于选项、查询形式、权限和提供方规则。
下方保留同版本完整手册,包括配置、约束和示例。不声称已进行运行时能力测试。
文件访问边界
file_fdw 模块提供了外部数据包装器 file_fdw ,可用于访问服务器文件系统中的数据文件,或者在服务器上执行程序并读取其输出。数据文件或程序输出必须采用 COPY FROM 可读取的格式;详见 COPY 。当前对数据文件的访问为只读。
核心源码中注册的实现
{
FdwRoutine *fdwroutine = makeNode(FdwRoutine);
fdwroutine->GetForeignRelSize = fileGetForeignRelSize;
fdwroutine->GetForeignPaths = fileGetForeignPaths;
fdwroutine->GetForeignPlan = fileGetForeignPlan;
fdwroutine->ExplainForeignScan = fileExplainForeignScan;
fdwroutine->BeginForeignScan = fileBeginForeignScan;
fdwroutine->IterateForeignScan = fileIterateForeignScan;
fdwroutine->ReScanForeignScan = fileReScanForeignScan;
fdwroutine->EndForeignScan = fileEndForeignScan;
fdwroutine->AnalyzeForeignTable = fileAnalyzeForeignTable;
fdwroutine->IsForeignScanParallelSafe = fileIsForeignScanParallelSafe;
PG_RETURN_POINTER(fdwroutine);
}注册的接口处理函数
| 接口操作 | 源码观察 | 回调 | 实现 |
|---|---|---|---|
| 扫描数据行 | 已注册处理函数;适用条件限制 | IterateForeignScan | fileIterateForeignScan |
| INSERT | 此构建未注册处理函数 | ExecForeignInsert | 未登记 |
| UPDATE | 此构建未注册处理函数 | ExecForeignUpdate | 未登记 |
| DELETE | 此构建未注册处理函数 | ExecForeignDelete | 未登记 |
| TRUNCATE | 此构建未注册处理函数 | ExecForeignTruncate | 未登记 |
| 连接路径下推 | 此构建未注册处理函数 | GetForeignJoinPaths | 未登记 |
| 上层路径,包括聚合 | 此构建未注册处理函数 | GetForeignUpperPaths | 未登记 |
| 批量插入 | 此构建未注册处理函数 | ExecForeignBatchInsert | 未登记 |
| 异步追加执行 | 此构建未注册处理函数 | ForeignAsyncRequest | 未登记 |
| 导入模式 | 此构建未注册处理函数 | ImportForeignSchema | 未登记 |
手册中的选项
| 选项 | 同版本定义 |
|---|---|
| filename | 指定要读取的文件。相对路径以数据目录为基准。必须指定 filename 或 program 之一,但不能同时指定二者。 |
| program | 指定要执行的命令。该命令的标准输出会按使用 COPY FROM PROGRAM 时的方式读取。必须指定 program 或 filename 之一,但不能同时指定二者。 |
| format | 指定数据格式,与 COPY 的 FORMAT 选项相同。 |
| header | 指定数据是否包含标题行,与 COPY 的 HEADER 选项相同。 |
| delimiter | 指定数据的定界符字符,与 COPY 的 DELIMITER 选项相同。 |
| quote | 指定数据的引用字符,与 COPY 的 QUOTE 选项相同。 |
| escape | 指定数据的转义字符,与 COPY 的 ESCAPE 选项相同。 |
| null | 指定数据的空值串,与 COPY 的 NULL 选项相同。 |
| default | 指定表示默认值的字符串,与 COPY 的 DEFAULT 选项相同。 |
| encoding | 指定数据编码,与 COPY 的 ENCODING 选项相同。 |
| on_error | 指定在将列输入值转换为其数据类型时遇到错误的处理方式,与 COPY 的 ON_ERROR 选项相同。 |
| reject_limit | 指定在将列输入值转换为其数据类型时可容忍的最大错误数,与 COPY 的 REJECT_LIMIT 选项相同。 |
| log_verbosity | 指定 file_fdw 发出消息的详细程度,与 COPY 的 LOG_VERBOSITY 选项相同。 |
| force_not_null | 这是一个布尔选项。如果为真,它指定该列的值不应与空值串(即表级的 null 选项)匹配。其效果与在 COPY 的 FORCE_NOT_NULL 选项中列出该列相同。 |
| force_null | 这是一个布尔选项。如果为真,它指定该列中与空值串匹配的值即使带有引号,也会作为 NULL 返回。没有此选项时,只有未加引号且与空值串匹配的值才会作为 NULL 返回。其效果与在 COPY 的 FORCE_NULL 选项中列出该列相同。 |
相关条目
文档与源码
来源构建
- 版本
- 18.6
- 构建
- PostgreSQL 18.6 source archive
- 来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
版本比较
PostgreSQL 18 → 19: 属性变化。
以下差异保留原始字段名与英文源描述。
--- PostgreSQL 18
+++ PostgreSQL 19
@@ -25,7 +25,7 @@
"name": "format"
},
{
- "definition": "Specifies whether the data has a header line, the same as COPY 's HEADER option.",
+ "definition": "Specifies whether to skip a header line, or how many header lines to skip, the same as COPY 's HEADER option.",
"name": "header"
},
{
比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。
导出 JSON · 返回外部数据包装器 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。