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

参数

参数

注释

ca_cert

别名:ssl_rootcert

字符串

指定包含 SSL 证书颁发机构 (CA) 证书的文件名。

如果该文件存在,则将验证服务器的证书是否由这些机构之一签名。

cascade

布尔值

自动删除依赖于该表的对象(例如视图)。仅与 *state=absent* 一起使用。

选择

  • false ←(默认)

  • true

columns

列表 / 元素=字符串

需要的列。

connect_params

字典

在 community.postgresql 2.3.0 中添加

要传递给 libpg 的任何其他参数。

这些参数优先。

默认值: {}

db

别名:login_db

字符串

要连接的数据库的名称以及将在其中创建表的数据库的名称。

默认值: ""

including

字符串

与 like 参数一起使用的关键字,可以是 DEFAULTS、CONSTRAINTS、INDEXES、STORAGE、COMMENTS 或 ALL。需要指定 *like*。与 *columns*、*rename* 和 *truncate* 互斥。

like

字符串

创建一个与另一个表类似的表(具有相似的 DDL)。与 *columns*、*rename* 和 *truncate* 互斥。

login_host

别名:host

字符串

运行数据库的主机。

如果在使用 localhost 时遇到连接问题,请尝试使用 127.0.0.1 代替。

默认值: ""

login_password

字符串

此模块应使用该密码来建立其 PostgreSQL 会话。

默认值: ""

login_unix_socket

别名:unix_socket

字符串

本地连接的 Unix 域套接字的路径。

默认值: ""

login_user

别名:login

字符串

此模块应使用该用户名来建立其 PostgreSQL 会话。

默认值: "postgres"

owner

字符串

设置表所有者。

port

别名:login_port

整数

要连接的数据库端口。

默认值: 5432

rename

字符串

新的表名。与 *tablespace*、*owner*、*unlogged*、*like*、*including*、*columns*、*truncate* 和 *storage_params* 互斥。

session_role

字符串

连接后切换到 session_role。指定的 session_role 必须是当前 login_user 所属的角色。

SQL 命令的权限检查就好像 session_role 是最初登录的用户一样执行。

ssl_cert

路径

在 community.postgresql 2.4.0 中添加

指定客户端 SSL 证书的文件名。

ssl_key

路径

在 community.postgresql 2.4.0 中添加

指定用于客户端证书的密钥的位置。

ssl_mode

字符串

确定是否以及以什么优先级与服务器协商安全的 SSL TCP/IP 连接。

有关模式的更多信息,请参阅 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html

prefer 的默认值与 libpq 的默认值匹配。

选择

  • "allow"

  • "disable"

  • "prefer" ←(默认)

  • "require"

  • "verify-ca"

  • "verify-full"

state

字符串

表的的状态。*state=absent* 与 *tablespace*、*owner*、*unlogged*、*like*、*including*、*columns*、*truncate*、*storage_params* 和 *rename* 互斥。

选择

  • "absent"

  • "present" ←(默认)

storage_params

列表 / 元素=字符串

存储参数,如 fillfactor、autovacuum_vacuum_treshold 等。与 *rename* 和 *truncate* 互斥。

table

别名:name

字符串 / 必填

表名。

tablespace

字符串

为表设置表空间。

truncate

布尔值

截断表。与 tablespaceownerunloggedlikeincludingcolumnsrenamestorage_params 互斥。

选择

  • false ←(默认)

  • true

trust_input

布尔值

在 community.postgresql 0.2.0 中添加

如果为 false,则检查参数的值是否可能存在危险。

只有在可能发生 SQL 注入时,使用 false 才有意义。

选择

  • false

  • true ← (默认)

unlogged

布尔值

创建一个未记录的表。

选择

  • false ←(默认)

  • true

属性

属性

支持

描述

check_mode

支持:完全

可以在 check_mode 下运行,并返回更改的状态预测,而无需修改目标。

说明

注意

  • 如果未传递 db 参数,则表将在名为 postgres 的数据库中创建。

  • PostgreSQL 允许创建无列的表,因此 columns 参数是可选的。

  • 未记录的表从 PostgreSQL 服务器版本 9.1 开始可用。

  • 默认身份验证假定您要么以 postgres 帐户登录,要么 sudo 到主机上的该帐户。

  • 为了避免“用户 postgres 的对等身份验证失败”错误,请使用 postgres 用户作为 become_user

  • 此模块使用 psycopg,一个 Python PostgreSQL 数据库适配器。您必须确保在使用此模块之前,主机上安装了 psycopg2 >= 2.5.1psycopg3 >= 3.1.8

  • 如果远程主机是 PostgreSQL 服务器(这是默认情况),则还必须在远程主机上安装 PostgreSQL。

  • 对于基于 Ubuntu 的系统,请在使用此模块之前在远程主机上安装 postgresqllibpq-devpython3-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)

返回值

常见的返回值记录在这里,以下是此模块特有的字段

描述

owner

字符串

表所有者。

返回:成功

示例: "postgres"

queries

字符串

已执行查询的列表。

返回:成功

示例: "['CREATE TABLE \"test_table\" (id bigint)']"

state

字符串

表状态。

返回:成功

示例: "present"

storage_params

列表 / 元素=字符串

存储参数。

返回:成功

示例: ["fillfactor=100", "autovacuum_analyze_threshold=1"]

table

字符串

表的名称。

返回:成功

示例: "foo"

tablespace

字符串

表空间。

返回:成功

示例: "ssd_tablespace"

作者

  • Andrei Klychkov (@Andersson007)