community.postgresql.postgresql_copy 模块 – 在文件/程序和 PostgreSQL 表之间复制数据
注意
此模块是 community.postgresql 集合(版本 3.9.0)的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.postgresql
。您需要进一步的要求才能使用此模块,有关详细信息,请参阅要求。
要在剧本中使用它,请指定: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 arg 描述 https://postgresql.ac.cn/docs/current/sql-copy.html。 选择
|
|
连接后切换到 session_role。指定的 session_role 必须是当前 login_user 是其成员的角色。 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 到该帐户。为了避免“用户 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'
返回值
通用返回值记录在此处,以下是此模块独有的字段
键 |
描述 |
---|---|
数据目标。 返回: 成功 示例: |
|
已执行查询的列表。 返回: 成功 示例: |
|
数据源。 返回: 成功 示例: |