file_fdw

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

file_fdw 是一个 contrib 模块,它提供了一个 外部数据封装器 (FDW),该封装器允许将服务器本地文件系统上的文件作为表进行查询。 file_fdw 是只读的。

file_fdwPostgreSQL 9.1 中添加。

安装

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

用法

文件格式

输入文件必须是 COPY ... FROM 命令支持的格式之一

  • text
  • csv
  • binary

权限

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)

另请参阅

COPY, CSV

反馈

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