CREATE TABLE 语句

CREATE TABLE 语句描述了源表和目标表的模式。如果目标表是外部的,那么使用 CREATE EXTERNAL TABLE 语句部分中描述的 CREATE EXTERNAL TABLE 语句。

语法

archecker 模式命令文件中使用的 CREATE TABLE 的语法与对应 GBase 8s SQL 语句相同。有关此语法的描述,请参阅 GBase 8s SQL 指南:语法

用途

您必须在 archecker 模式命令文件中包含源表的模式。 该模式必须和创建归档时源表的模式相同。

源表的模式未由 archecker 验证。如未提供准确的模式,会发生不可预测的结果。

源表不可以是同义词或视图。源表的模式仅需列列表和存储选项。 将忽略诸如扩展数据块大小和锁定方式等其他属性。 对于 ON-Bar 归档,archecker 使用源表的存储空间列表来创建要从存储管理器中检索的对象列表。如果源表是分段的,必须列出所有包含源表数据的数据库空间。archecker 实用程序只从模式命令文件中列出的数据库空间中抽取数据。

如果源表包含约束、索引或触发器,那么在复原期间将会自动禁用这些约束、索引或触发器。 还会禁用参考目标表的外部约束。 复原完成后,约束、索引和触发器将被启用。 为了顺利地执行复原,在执行复原前除去约束、索引和触发器。

您必须还在命令文件中包含目标表的模式。 如果执行复原时目标表不存在,将使用所提供的模式创建它。

如果目标表存在,其模式必须和命令文件中指定的模式匹配。随后将数据附加到现有的表。

示例

源表和目标表的模式不一定要相同。 以下示例显示了如何能够在执行数据抽取之后对源数据重新分区:
CREATE TABLE source (col1 integer, ...) IN dbspace1;
CREATE TABLE target (col1 integer, ...) 
   FRAGMENT BY EXPRESSION
      MOD(col1, 3) = 0 in dbspace3,
      MOD(col1, 3) = 1 in dbspace4,
      MOD(col1, 3) = 2 in dbspace5;
INSERT INTO target SELECT * FROM source;