合 GreenPlum中的CREATE TABLE AS和SELECT INTO语句创建表
前言
GreenPlum中可以使用CREATE TABLE AS和select into来基于一个表创建新表。
CREATE TABLE AS
根据查询结果定义一个新表。
概要
1 2 3 4 5 6 7 8 | CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE table_name [ (column_name [, ...] ) ] [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ TABLESPACE tablespace_name ] AS query [ WITH [ NO ] DATA ] [ DISTRIBUTED BY (column [, ... ] ) | DISTRIBUTED RANDOMLY | DISTRIBUTED REPLICATED ] |
其中storage_parameter是:
1 2 3 4 5 6 7 | appendoptimized={TRUE|FALSE} blocksize={8192-2097152} orientation={COLUMN|ROW} compresstype={ZLIB|ZSTD|QUICKLZ} compresslevel={1-19 | 1} fillfactor={10-100} oids[=TRUE|FALSE] |
描述
CREATE TABLE AS创建一个表, 并用SELECT命令计算的数据填充该表。 表列具有与SELECT的输出列关联的名称和数据类型,但是您可以通过提供新列名称的显式列表来覆盖列名称。
CREATE TABLE AS创建一个新表并仅对查询进行一次取值以填充一次新表。 新表将不会跟踪对查询源表的后续更改。
参数
GLOBAL | LOCAL
忽略兼容性。 这些关键字已弃用;有关详细信息,请参考CREATE TABLE。
TEMPORARY | TEMP
如果指定,则将新表创建为临时表。 临时表在会话结束时或在当前事务结束时自动删除(请参见ON COMMIT)。 临时表存在时,具有相同名称的现有永久表在当前会话中不可见,除非使用模式限定名称引用它们。 在临时表上创建的所有索引也会自动成为临时索引。
UNLOGGED
如果指定,该表将创建为未记录表。 写入未记录表的数据不会写入预写(WAL)日志,这使它们比普通表快得多。 但是,未记录表的内容不会复制到mirror实例。 同样,未记录的表也不是崩溃安全的。 segment实例崩溃或异常关闭后,该segment上未记录表的数据将被截断。 在未记录表上创建的所有索引也会自动成为未记录索引。
table_name
要创建的新表的名称(可以由模式指定)。
column_name
新表中的列名。如果未提供列名,则它们取自查询的输出列名。