file_fdw. Оболочка сторонних данных для доступа к файлам на сервере#
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext.
Модуль реализует оболочку сторонних данных (fdw – foreign-data wrapper), с помощью которой можно:
обращаться к файлам данных в файловой системе сервера;
выполнять программы на сервере;
читать их вывод.
Файлы и вывод программ должны быть в формате, понятном для команды COPY FROM.
Файлы доступны только для чтения.
Для сторонней таблицы можно задать параметры. Некоторые параметры имеют аналогичные указания в команде COPY.
Параметр |
Описание |
Аналог в |
|---|---|---|
|
Определяет имя файла, который нужно прочитать. При указании относительного пути он рассматривается от каталога данных. Необходимо определить либо параметр |
– |
|
Определяет команду, которая будет выполнена. Поток стандартного вывода этой команды будет прочитан так же, как и с |
– |
|
Определяет формат файла |
|
|
Указывает на то, что данные содержат строку заголовка с именами столбцов |
|
|
Задает символ, разделяющий столбцы в данных |
|
|
Задает символ, используемый для заключения данных в кавычки |
|
|
Задает символ, используемый для экранирования данных |
|
|
Определяет строку, задающую значение |
|
|
Задает кодировку данных |
|
Параметры для столбцов создаваемой сторонней таблицы:
Параметр |
Тип |
Значения |
Аналог в |
|---|---|---|---|
|
Логическое |
Если |
|
|
Логическое |
Если |
|
Доработка#
Доработка не проводилась.
Ограничения#
Модуль не поддерживает указание 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: https://www.postgresql.org/docs/15/file-fdw.html.