Skip to main content

修改 Source Schema 或表 Schema

该内容介绍如何修改 RisingWave Source 或表的 Schema。

上游 Source 的 Schema 发生变化(即添加或删除列)时,需要修改 RisingWave 中相应 Source 或表的 Schema,以确保它们保持一致。

如果使用 Schema Registry 来创建 Source 或表,则无法修改 Source 或表的 Schema。

添加列

要在 Source 中添加列,请使用以下命令:

ALTER SOURCE <source_name> ADD COLUMN <column_name> <column_type>;

同样,要向表中添加列,请使用以下命令:

ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;

有关这两条命令的详细信息,请参阅 ALTER SOURCEALTER TABLE

note

请注意,在 RisingWave 中无法向 Source 或表添加主键列。要修改 Source 或表的主键,需要重新创建表。

向 Source 或表中添加列时,下游物化视图不会自动接收新列。

例如,如果您有一个使用以下语句创建的物化视图 mv1

CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM my_kafka_source;

my_kafka_source 添加列时:

ALTER SOURCE my_kafka_source ADD COLUMN new_col INTEGER;

物化视图 mv1 不包含新列 new_col。如果你想获取这一新列,就需要创建一个新的物化视图。

删除列

在 RisingWave 中无法从 Source 中删除列。如果要从 Source 中删除列,则需要删除 Source 并重新创建 Source。

如果在物化视图中引用了表的某一列,则无法删除该列。这是为了确保数据一致性,防止下游数据处理中断。

要从表中删除列,请使用以下命令:

ALTER TABLE table_name DROP COLUMN column_name;