file_fdw

Оболочка сторонних данных для доступа к файлам на сервере.
Схема размещения: ext.
Модуль реализует оболочку сторонних данных (fdw – foreign-data wrapper), с помощью которой можно:
  • обращаться к файлам данных в файловой системе сервера;
  • выполнять программы на сервере;
  • читать их вывод.
Файлы и вывод программ должны быть в формате, понятном для команды COPY FROM.
Файлы доступны только для чтения.
Для сторонней таблицы можно задать параметры. Некоторые параметры имеют аналогичные указания в команде 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, будут возвращаться как NULLFORCE_NULL

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

Пример использования для доступа к журналу сообщений 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;
Результат:
Раскрыть type=sql
        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 можно получить по ссылке.
Предыдущий раздел
earthdistance
Следующий раздел
fulleq
Была ли страница полезной?