Juh*_*uh_ 4 alter-table clickhouse
我在Clickhouse中有一个表,说“ my_table”,其中有重复项(my_table_rep1,...)。我需要添加一列float64类型的默认值(-1)。
我应该怎么做?
我希望默认值不会实际添加到现有条目中。
该文档非常简单:
ALTER TABLE [db].name [ON CLUSTER cluster] ADD COLUMN name [type] [default_expr] [AFTER name_after]
关于:
我希望默认值不会实际添加到现有条目中。
在文档中还有一条声明:
如果将新列添加到表中,但以后更改其默认表达式,则用于旧数据的值将更改(对于未在磁盘上存储值的数据)
因此,基本上,您必须:
DEFAULT 0或带有其他名称-取决于您想要在现有条目中包含什么)OPTIMIZE TABLE .. FINAL强迫Clickhouse新的数据写入磁盘一个例子:
:) CREATE TABLE my_table (date Date DEFAULT today(), s String) ENGINE = MergeTree(date, (date), 8192);
:) INSERT INTO my_table (s) VALUES ('1. foo');
:) ALTER TABLE my_table ADD COLUMN f Float64;
:) INSERT INTO my_table (s) VALUES ('2. bar');
:) SELECT * FROM my_table;
????????date???s????????f??
? 2018-04-20 ? 1. foo ? 0 ?
? 2018-04-20 ? 2. bar ? 0 ?
???????????????????????????
:) OPTIMIZE TABLE my_table PARTITION 201804 FINAL;
:) ALTER TABLE my_table MODIFY COLUMN f Float64 DEFAULT -1;
:) INSERT INTO my_table (s) VALUES ('3. baz');
:) SELECT * FROM my_table;
????????date???s?????????f??
? 2018-04-20 ? 3. baz ? -1 ?
? 2018-04-20 ? 1. foo ? 0 ?
? 2018-04-20 ? 2. bar ? 0 ?
????????????????????????????
Run Code Online (Sandbox Code Playgroud)
您确实必须这样做OPTIMIZE TABLE ... FULL,因为如果您不这样做,将会发生奇怪的事情:https : //gist.github.com/hatarist/5e7653808e59349c34d4589b2fc69b14
| 归档时间: |
|
| 查看次数: |
4004 次 |
| 最近记录: |