community.postgresql.postgresql_table 模块 – 创建、删除或修改 PostgreSQL 表
注意
此模块是 community.postgresql 集合(版本 3.9.0)的一部分。
如果您正在使用 ansible
包,您可能已经安装了这个集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.postgresql
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:community.postgresql.postgresql_table
。
概要
允许创建、删除、重命名、截断表或更改某些表属性。
要求
在执行此模块的主机上需要以下要求。
psycopg2 >= 2.5.1
参数
参数 |
注释 |
---|---|
指定包含 SSL 证书颁发机构 (CA) 证书的文件名。 如果该文件存在,则将验证服务器的证书是否由这些机构之一签名。 |
|
自动删除依赖于该表的对象(例如视图)。仅与 *state=absent* 一起使用。 选择
|
|
需要的列。 |
|
要传递给 libpg 的任何其他参数。 这些参数优先。 默认值: |
|
要连接的数据库的名称以及将在其中创建表的数据库的名称。 默认值: |
|
与 like 参数一起使用的关键字,可以是 DEFAULTS、CONSTRAINTS、INDEXES、STORAGE、COMMENTS 或 ALL。需要指定 *like*。与 *columns*、*rename* 和 *truncate* 互斥。 |
|
创建一个与另一个表类似的表(具有相似的 DDL)。与 *columns*、*rename* 和 *truncate* 互斥。 |
|
运行数据库的主机。 如果在使用 默认值: |
|
此模块应使用该密码来建立其 PostgreSQL 会话。 默认值: |
|
本地连接的 Unix 域套接字的路径。 默认值: |
|
此模块应使用该用户名来建立其 PostgreSQL 会话。 默认值: |
|
设置表所有者。 |
|
要连接的数据库端口。 默认值: |
|
新的表名。与 *tablespace*、*owner*、*unlogged*、*like*、*including*、*columns*、*truncate* 和 *storage_params* 互斥。 |
|
连接后切换到 session_role。指定的 session_role 必须是当前 login_user 所属的角色。 SQL 命令的权限检查就好像 session_role 是最初登录的用户一样执行。 |
|
指定客户端 SSL 证书的文件名。 |
|
指定用于客户端证书的密钥的位置。 |
|
确定是否以及以什么优先级与服务器协商安全的 SSL TCP/IP 连接。 有关模式的更多信息,请参阅 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html。
选择
|
|
表的的状态。*state=absent* 与 *tablespace*、*owner*、*unlogged*、*like*、*including*、*columns*、*truncate*、*storage_params* 和 *rename* 互斥。 选择
|
|
存储参数,如 fillfactor、autovacuum_vacuum_treshold 等。与 *rename* 和 *truncate* 互斥。 |
|
表名。 |
|
为表设置表空间。 |
|
截断表。与 tablespace、owner、unlogged、like、including、columns、rename 和 storage_params 互斥。 选择
|
|
如果为 只有在可能发生 SQL 注入时,使用 选择
|
|
创建一个未记录的表。 选择
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全 |
可以在 check_mode 下运行,并返回更改的状态预测,而无需修改目标。 |
说明
注意
如果未传递 db 参数,则表将在名为 postgres 的数据库中创建。
PostgreSQL 允许创建无列的表,因此 columns 参数是可选的。
未记录的表从 PostgreSQL 服务器版本 9.1 开始可用。
默认身份验证假定您要么以
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
包。
另请参阅
另请参阅
- community.postgresql.postgresql_sequence
创建、删除或更改 PostgreSQL 序列。
- community.postgresql.postgresql_idx
从 PostgreSQL 数据库创建或删除索引。
- community.postgresql.postgresql_info
收集有关 PostgreSQL 服务器的信息。
- community.postgresql.postgresql_tablespace
从远程主机添加或删除 PostgreSQL 表空间。
- community.postgresql.postgresql_owner
更改 PostgreSQL 数据库对象的所有者。
- community.postgresql.postgresql_privs
授予或撤销 PostgreSQL 数据库对象的权限。
- community.postgresql.postgresql_copy
在文件/程序和 PostgreSQL 表之间复制数据。
- CREATE TABLE 参考
CREATE TABLE 命令文档的完整参考。
- ALTER TABLE 参考
ALTER TABLE 命令文档的完整参考。
- DROP TABLE 参考
DROP TABLE 命令文档的完整参考。
- PostgreSQL 数据类型
PostgreSQL 数据类型文档的完整参考。
示例
- name: Create tbl2 in the acme database with the DDL like tbl1 with testuser as an owner
community.postgresql.postgresql_table:
db: acme
name: tbl2
like: tbl1
owner: testuser
- name: Create tbl2 in the acme database and tablespace ssd with the DDL like tbl1 including comments and indexes
community.postgresql.postgresql_table:
db: acme
table: tbl2
like: tbl1
including: comments, indexes
tablespace: ssd
- name: Create test_table with several columns in ssd tablespace with fillfactor=10 and autovacuum_analyze_threshold=1
community.postgresql.postgresql_table:
name: test_table
columns:
- id bigserial primary key
- num bigint
- stories text
tablespace: ssd
storage_params:
- fillfactor=10
- autovacuum_analyze_threshold=1
- name: Create an unlogged table in schema acme
community.postgresql.postgresql_table:
name: acme.useless_data
columns: waste_id int
unlogged: true
- name: Rename table foo to bar
community.postgresql.postgresql_table:
table: foo
rename: bar
- name: Rename table foo from schema acme to bar
community.postgresql.postgresql_table:
name: acme.foo
rename: bar
- name: Set owner to someuser
community.postgresql.postgresql_table:
name: foo
owner: someuser
- name: Change tablespace of foo table to new_tablespace and set owner to new_user
community.postgresql.postgresql_table:
name: foo
tablespace: new_tablespace
owner: new_user
- name: Truncate table foo
community.postgresql.postgresql_table:
name: foo
truncate: true
- name: Drop table foo from schema acme
community.postgresql.postgresql_table:
name: acme.foo
state: absent
- name: Drop table bar cascade
community.postgresql.postgresql_table:
name: bar
state: absent
cascade: true
- name: Create table with composite primary key
community.postgresql.postgresql_table:
name: composite_pk_table
columns:
- id bigserial
- num bigint
- primary key (id, num)
返回值
常见的返回值记录在这里,以下是此模块特有的字段
键 |
描述 |
---|---|
表所有者。 返回:成功 示例: |
|
已执行查询的列表。 返回:成功 示例: |
|
表状态。 返回:成功 示例: |
|
存储参数。 返回:成功 示例: |
|
表的名称。 返回:成功 示例: |
|
表空间。 返回:成功 示例: |