修改 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 SOURCE
和 ALTER 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;