community.postgresql.postgresql_copy 模块 – 在文件/程序和 PostgreSQL 表之间复制数据
注意
此模块是 community.postgresql 集合 (版本 3.9.0) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.postgresql
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:community.postgresql.postgresql_copy
。
概要
在文件/程序和 PostgreSQL 表之间复制数据。
要求
执行此模块的主机需要以下要求。
psycopg2 >= 2.5.1
参数
参数 |
注释 |
---|---|
指定包含 SSL 证书颁发机构 (CA) 证书的文件的名称。 如果文件存在,则会验证服务器的证书是否由这些机构之一签名。 |
|
用于 COPY FROM/TO 的 src/dst 表的列名列表。 |
|
要传递给 libpg 的任何其他参数。 这些参数具有优先级。 默认值: |
|
将数据从文件复制到表(将数据追加到表中已有的数据)。 与 copy_to 和 src 互斥。 |
|
将表的内容复制到文件。 也可以复制 SELECT 查询的结果。 与 copy_from 和 dst 互斥。 |
|
要连接到的数据库的名称。 |
|
将数据从 copy_from=/path/to/data.file 复制到 dst=tablename。 仅与 copy_from 一起使用。 |
|
运行数据库的主机。 如果使用 默认值: |
|
此模块应用于建立其 PostgreSQL 会话的密码。 默认值: |
|
本地连接的 Unix 域套接字的路径。 默认值: |
|
此模块应用于建立其 PostgreSQL 会话的用户名。 默认值: |
|
COPY 命令的选项。 查看可用选项的完整列表 https://postgresql.ac.cn/docs/current/sql-copy.html。 |
|
要连接到的数据库端口。 默认值: |
|
将 src/dst 标记为程序。数据将复制到/从程序。 参见示例块和 PROGRAM 参数说明 https://postgresql.ac.cn/docs/current/sql-copy.html。 选项
|
|
连接后切换到session_role。指定的session_role必须是当前登录用户所属的角色。 SQL命令的权限检查将视为session_role是最初登录的用户。 |
|
将数据从copy_from复制到src=tablename。 仅与copy_to一起使用。 |
|
指定客户端SSL证书的文件名。 |
|
指定客户端证书使用的密钥位置。 |
|
确定是否以及以什么优先级与服务器协商安全的SSL TCP/IP连接。 有关模式的更多信息,请参见 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html。 默认值 选项
|
|
如果 只有当可能发生SQL注入时,使用 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 部分 如果check_mode=true,我们只检查src/dst表的可用性并返回实际上未执行的COPY查询。 如果i(check_mode=true)并且源代码已作为SQL传递,模块将执行它并回滚事务,但请注意,这可能会影响数据库性能(例如,如果SQL收集大量数据)。 |
可以在check_mode下运行并返回更改状态预测,而无需修改目标。 |
备注
注意
支持PostgreSQL 9.4+ 版本。
COPY命令仅允许数据库超级用户使用。
默认身份验证假设您正在以主机上的
postgres
帐户登录或使用sudo登录。为了避免“Peer authentication failed for user postgres”错误,请使用postgres用户作为become_user。
此模块使用
psycopg
,这是一个Python PostgreSQL数据库适配器。在使用此模块之前,必须确保已安装psycopg2 >= 2.5.1
或psycopg3 >= 3.1.8
。如果远程主机是PostgreSQL服务器(这是默认情况),则还必须在远程主机上安装PostgreSQL。
对于基于Ubuntu的系统,在使用此模块之前,请在远程主机上安装
postgresql
、libpq-dev
和python3-psycopg2
包。
另请参见
另请参见
- 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: true
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'
返回值
常见的返回值已在此处记录此处,以下是此模块特有的字段
键 |
描述 |
---|---|
数据目标。 返回:成功 示例: |
|
已执行查询的列表。 返回:成功 示例: |
|
数据源。 返回:成功 示例: |