在 MySQL 8.0.31 之前,在 HeatWave 中加载的表上不允许进行 DDL 操作,带有SECONDARY_ENGINE =
RAPID
. SECONDARY_ENGINE
在这些版本中,要更改表的定义,您必须在执行 DDL 操作之前卸载表并删除
属性,然后重新加载表。从 MySQL 8.0.31 开始,您不需要这样做,并且可以在不卸载表的情况下更改表。
在 MySQL 8.0.31 之前,请按照以下过程修改在 HeatWave 中加载的表:
-
从 HeatWave 卸载表;例如:
ALTER TABLE orders SECONDARY_UNLOAD;
-
将
SECONDARY_ENGINE
属性设置为NULL
;例如:ALTER TABLE orders SECONDARY_ENGINE = NULL;
-
修改表格。以下示例演示了添加先前排除的列、修改或删除列编码以及修改或删除数据放置键。示例基于 第 2.6 节“表加载和查询示例”中描述的订单表。
-
添加先前排除的列
通过在or语句中指定
NOT SECONDARY
列属性 来排除列;例如:CREATE TABLE
ALTER TABLE
ALTER TABLE orders MODIFY `O_COMMENT` varchar(79) NOT NULL NOT SECONDARY;
要在下次加载表时包含先前排除的列,请修改列定义以删除
NOT SECONDARY
列属性;例如:ALTER TABLE orders MODIFY `O_COMMENT` varchar(79) NOT NULL;
-
修改或删除列编码
字符串列编码是通过
RAPID_COLUMN=ENCODING={SORTED|VARLEN}
在列注释中指定关键字字符串来定义的;例如:ALTER TABLE orders MODIFY `O_COMMENT` VARCHAR(79) COLLATE utf8mb4_bin NOT NULL COMMENT 'RAPID_COLUMN=ENCODING=SORTED';
要修改列编码,请更改列注释;例如:
ALTER TABLE orders MODIFY `O_COMMENT` VARCHAR(79) COLLATE utf8mb4_bin NOT NULL COMMENT 'RAPID_COLUMN=ENCODING=VARLEN';
要删除列编码,请
RAPID_COLUMN=ENCODING={SORTED|VARLEN}
从列注释中删除关键字字符串。下次加载表时,string列编码默认为VARLEN
encoding,即默认的string列编码。以下示例将列注释全部删除,但如果您还想保留其他列注释,则只需删除编码关键字字符串即可。
ALTER TABLE orders MODIFY `O_COMMENT` VARCHAR(79) COLLATE utf8mb4_bin NOT NULL;
-
修改或删除数据放置键
通过在列注释中 指定关键字字符串来定义数据放置键 ;例如:
RAPID_COLUMN=DATA_PLACEMENT_KEY=
N
ALTER TABLE orders MODIFY `O_ORDERDATE` DATE NOT NULL COMMENT 'RAPID_COLUMN=DATA_PLACEMENT_KEY=1';
要修改数据放置键,请修改数据放置关键字字符串:
ALTER TABLE orders MODIFY `O_ORDERDATE` DATE NOT NULL COMMENT 'RAPID_COLUMN=DATA_PLACEMENT_KEY=2';
要删除数据放置键,请修改列注释以删除
RAPID_COLUMN=DATA_PLACEMENT_KEY=N
关键字字符串。以下示例将列注释全部删除,但如果您还想保留其他列注释,则只需删除数据放置关键字字符串即可。ALTER TABLE orders MODIFY `O_ORDERDATE` DATE NOT NULL;
-
-
对表进行所需的更改后,将
SECONDARY_ENGINE
属性设置回RAPID
; 例如:ALTER TABLE orders SECONDARY_ENGINE = RAPID;
-
重新加载表格;例如:
ALTER TABLE orders SECONDARY_LOAD;