file_fdw

用于查询服务器文件系统上文件的外部数据包装器

file_fdw 是一个 contrib 模块,它提供了一个 外部数据包装器 (FDW),使能够将服务器本地文件系统上的文件查询为表。这些文件必须采用 COPY ... FROM 命令支持的格式之一(textcsvbinary)。file_fdw 是只读的。

file_fdwPostgreSQL 9.1 中添加。

安装

必须由超级用户使用 CREATE EXTENSION 语法将 file_fdw 扩展安装到需要其功能的数据库中。

权限

PostgreSQL 11 之前,只有超级用户可以使用 file_fdw 从操作系统读取文件。从 PostgreSQL 11 开始,以下 默认角色 可用于启用非超级用户使用 file_fdw

  • pg_read_server_files
  • pg_write_server_files
  • pg_execute_server_program

更改历史记录

示例

作为一个人为的例子,将以下示例 CSV 文件保存为/tmp/file_fdw-test.csv:

ID,Message,Random numbers
1,Hello world,34432532
2,Goodbye cruel world,97325644

要查询此文件,请设置一个与先前创建的外部服务器关联的 外部表,该表包含定义为与 CSV 文件中的列匹配的列。外部表定义还包含文件的位置(数据库的系统用户必须能够读取该文件)。请注意,必须以超级用户身份执行外部表定义,因为源文件将以数据库系统用户的权限读取,这存在潜在的安全风险。

适合读取示例文件的外部表为

CREATE EXTENSION file_fdw;

CREATE SERVER file_fdw_test_srv FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE csv_test (
 id INT,
 message TEXT,
 randnrs BIGINT
)
SERVER file_fdw_test_srv
OPTIONS (
   filename '/tmp/file_fdw-test.csv',
   format 'csv',
   header 'TRUE'
)

然后可以像查询普通表一样查询该文件

postgres=# SELECT * FROM csv_test;
 id |       message       | randnrs  
----+---------------------+----------
  1 | Hello world         | 34432532
  2 | Goodbye cruel world | 97325644

(2 rows)

分类

Contrib 模块数据导入/导出扩展外部数据包装器 (FDW)

另请参阅

COPYCSV

反馈

提交任何关于“file_fdw”的评论、建议或更正 此处