community.postgresql.postgresql_copy – Копирование данных между файлом/программой и таблицей PostgreSQL
Примечание
Этот плагин входит в коллекцию community.postgresql (версия 1.1.1).
Для его установки используйте: ansible-galaxy collection install community.postgresql.
Для использования в книге задач укажите: community.postgresql.postgresql_copy.
Обзор
- Копирование данных между файлом/программой и таблицей PostgreSQL.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка | Указывает имя файла, содержащего сертификат(ы) авторитета сертификации SSL (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. |
| trust_input логическое значение добавлено в 0.2.0 community.postgresql |
| Если no, проверять, являются ли значения параметров потенциально опасными.Использование no имеет смысл только в случае возможности SQL-инъекций. |
Примечания
Примечание
- Поддерживает PostgreSQL версии 9.4 и выше.
- Команда COPY разрешена только пользователям базы данных с правами суперпользователя.
- Если check_mode=yes, мы просто проверяем доступность таблицы src/dst и возвращаем запрос COPY, который фактически не был выполнен.
- Если (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
community.postgresql.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
community.postgresql.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
community.postgresql.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
community.postgresql.postgresql_copy:
src: acme
copy_to: /tmp/data.txt
- name: Copy data from SELECT query to/tmp/data.csv in CSV format
community.postgresql.postgresql_copy:
src: 'SELECT * FROM acme'
copy_to: /tmp/data.csv
options:
format: csv
- name: Copy CSV data from my_table to gzip
community.postgresql.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
community.postgresql.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 |
Авторы
- Андрей Клычков (@Andersson007)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/postgresql/postgresql_copy_module.html