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.