file_fdw. Оболочка сторонних данных для доступа к файлам на сервере#

В исходном дистрибутиве установлено по умолчанию: нет.

Связанные компоненты: отсутствуют.

Схема размещения: ext.

Модуль реализует оболочку сторонних данных (fdw – foreign-data wrapper), с помощью которой можно:

  • обращаться к файлам данных в файловой системе сервера;

  • выполнять программы на сервере;

  • читать их вывод.

Файлы и вывод программ должны быть в формате, понятном для команды COPY.

Файлы доступны только для чтения.

Для сторонней таблицы можно задать параметры. Некоторые параметры имеют аналогичные указания в команде COPY.

Параметр

Описание

Аналог в COPY

filename

Определяет имя файла, который нужно прочитать. При указании относительного пути он рассматривается от каталога данных. Необходимо определить либо параметр filename, либо program, но не оба сразу.

–

program

Определяет команду, которая будет выполнена. Поток стандартного вывода этой команды будет прочитан так же, как и с COPY FROM PROGRAM. Необходимо определить либо параметр program, либо filename, но не оба сразу.

–

format

Определяет формат файла

FORMAT

header

Указывает на то, что данные содержат строку заголовка с именами столбцов

HEADER

delimiter

Задает символ, разделяющий столбцы в данных

DELIMITER

quote

Задает символ, используемый для заключения данных в кавычки

QUOTE

escape

Задает символ, используемый для экранирования данных

ESCAPE

null

Определяет строку, задающую значение NULL в данных

NULL

encoding

Задает кодировку данных

ENCODING

Параметры для столбцов создаваемой сторонней таблицы:

Параметр

Тип

Значения

Аналог в COPY

force_not_null

Логическое

Если true, то значение столбца не должно сверяться со значением NULL, заданным в параметре null на уровне таблицы

FORCE_NOT_NULL

force_null

Логическое

Если true, значения столбцов нужно сверять со значением NULL, заданным в параметре NULL, даже если они заключены в кавычки. Без этого параметра только значения без кавычек, соответствующие значению null, будут возвращаться как NULL

FORCE_NULL

Доработка#

Доработка не проводилась.

Ограничения#

Модуль не поддерживает указание FORCE_QUOTE команды COPY.

Установка#

При наличии прав администратора СУБД включение модуля выполняется запросом:

CREATE EXTENSION file_fdw SCHEMA ext;

Настройка#

Настройка не требуется.

Использование модуля#

Пример использования для доступа к журналу сообщений PostgreSQL как к таблице.

Создайте сторонний сервер:

CREATE SERVER pgsyslog FOREIGN DATA WRAPPER file_fdw;

Создайте стороннюю таблицу pgsyslog с перечислением столбцов и указанием на расположение файла:

CREATE FOREIGN TABLE pgsyslog (
  log_time timestamp(3) with time zone,
  user_name text,
  database_name text,
  process_id integer,
  connection_from text
) SERVER pgsyslog
OPTIONS (filename 'log/pgsyslog.csv', format 'csv');

Содержимое файла $PGDATA/log/pgsyslog.csv:

2023-02-04 10:23:54+03,User1,full_db,345445,out_db

Выборка данных из созданной сторонней таблицы:

SELECT * FROM pgsyslog;

Результат:

        log_time        | user_name | database_name | process_id | connection_from 
------------------------+-----------+---------------+------------+-----------------
 2023-02-04 10:23:54+03 | User1     | full_db       |     345445 | out_db
(1 row)

В результате для просмотра файла на сервере можно выполнять запросы к таблице.

Ссылки на документацию разработчика#

Дополнительно поставляемый модуль file_fdw.