postgresql_copy – Копирование данных между файлом/программой и таблицей PostgreSQL
Новая версия с 2.9.
Описание
- Копирование данных между файлом/программой и таблицей PostgreSQL.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка | Указывает имя файла, содержащего сертификат(ы) центра сертификации (CA). Если файл существует, сертификат сервера будет проверен на подпись одним из этих центров. псевдонимы: ssl_rootcert | |
| columns список / элементы=строка | Список имён столбцов для таблицы src/dst для COPY FROM/TO. псевдонимы: column | |
| copy_from путь | Копирование данных из файла в таблицу (добавление данных к уже имеющимся в таблице). Взаимоисключающие параметры с copy_to и src. псевдонимы: from | |
| copy_to путь | Копирование содержимого таблицы в файл. Также можно скопировать результаты запроса SELECT. Взаимоисключающие параметры с copy_from и dst. псевдонимы: to | |
| db строка | Имя базы данных для подключения. псевдонимы: login_db | |
| dst строка | Копирование данных в dst=tablename из copy_from=/path/to/data.file. Используется только с copy_from. псевдонимы: destination | |
| login_host строка | Хост, на котором работает база данных. | |
| login_password строка | Пароль, используемый для аутентификации. | |
| login_unix_socket строка | Путь к сокету Unix доменной области для локальных подключений. | |
| login_user строка | По умолчанию: "postgres" | Имя пользователя, используемое для аутентификации. |
| options словарь | Параметры команды COPY. Полный список доступных параметров см. на https://www.postgresql.org/docs/current/sql-copy.html. | |
| port целое число | По умолчанию: 5432 | Порт базы данных для подключения. псевдонимы: login_port |
| program булево |
| Отмечает src/dst как программу. Данные будут копироваться в/из программы. См. примеры и описание аргумента PROGRAM на https://www.postgresql.org/docs/current/sql-copy.html. |
| session_role строка | Переключение на session_role после подключения. Указанный session_role должен быть ролью, членом которой является текущий login_user. Проверка разрешений для команд SQL выполняется так, как будто session_role была той, которая первоначально подключилась. | |
| src строка | Копирование данных из copy_from в src=tablename. Используется только с copy_to. псевдонимы: source | |
| ssl_mode строка |
| Определяет, будет ли и с какой приоритетностью устанавливаться защищенное SSL TCP/IP-соединение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
Примечания
Примечание
- Поддерживает PostgreSQL версии 9.4+.
- Команда COPY разрешена только суперпользователям базы данных.
- Если check_mode=yes, мы просто проверяем наличие таблиц src/dst и возвращаем запрос COPY, который фактически не был выполнен.
- Если i(check_mode=yes) и источник был передан как SQL, модуль выполнит его и вернёт транзакцию, но обратите внимание, что это может повлиять на производительность базы данных (например, если SQL собирает много данных).
- Аутентификация по умолчанию предполагает, что вы либо входите как, либо используете sudo для учетной записи
postgresна хосте. - Чтобы избежать ошибки «Ошибка проверки подлинности участника для пользователя postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует psycopg2, адаптер Python PostgreSQL базы данных. Необходимо убедиться, что psycopg2 установлен на хосте перед использованием этого модуля.
- Если удалённый хост — это сервер PostgreSQL (что является случаем по умолчанию), то PostgreSQL также должен быть установлен на удалённом хосте.
- Для систем на базе Ubuntu установите пакеты postgresql, libpq-dev и python-psycopg2 на удалённом хосте перед использованием этого модуля.
- Для параметра ca_cert требуется как минимум Postgres версии 8.4 и psycopg2 версии 2.4.3.
См. также
См. также
- Ссылка на команду COPY
- Полная справка по команде COPY.
Примеры
- name: Copy text TAB-separated data from file /tmp/data.txt to acme table
postgresql_copy:
copy_from: /tmp/data.txt
dst: acme
- name: Copy CSV (comma-separated) data from file /tmp/data.csv to columns id, name of table acme
postgresql_copy:
copy_from: /tmp/data.csv
dst: acme
columns: id,name
options:
format: csv
- name: >
Copy text vertical-bar-separated data from file /tmp/data.txt to bar table.
The NULL values are specified as N
postgresql_copy:
copy_from: /tmp/data.csv
dst: bar
options:
delimiter: '|'
null: 'N'
- name: Copy data from acme table to file /tmp/data.txt in text format, TAB-separated
postgresql_copy:
src: acme
copy_to: /tmp/data.txt
- name: Copy data from SELECT query to/tmp/data.csv in CSV format
postgresql_copy:
src: 'SELECT * FROM acme'
copy_to: /tmp/data.csv
options:
format: csv
- name: Copy CSV data from my_table to gzip
postgresql_copy:
src: my_table
copy_to: 'gzip > /tmp/data.csv.gz'
program: yes
options:
format: csv
- name: >
Copy data from columns id, name of table bar to /tmp/data.txt.
Output format is text, vertical-bar-separated, NULL as N
postgresql_copy:
src: bar
columns:
- id
- name
copy_to: /tmp/data.csv
options:
delimiter: '|'
null: 'N'
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| dst строка | всегда | Место назначения данных. Пример: /tmp/data.csv |
| queries строка | всегда | Список выполненных запросов. Пример: ["COPY test_table FROM '/tmp/data_file.txt' (FORMAT csv, DELIMITER ',', NULL 'NULL')"] |
| src строка | всегда | Источник данных. Пример: mytable |
Статус
- Для этого модуля не гарантируется обратная совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- Андрей Клычков (@Andersson007)
Подсказка
Если вы заметите какие-либо проблемы в данной документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/postgresql_copy_module.html