clickhouse中Nullable與非空字段的建表與類型互轉(zhuǎn)方式
背景
有些表隨著業(yè)務(wù)發(fā)展會涉及字段的約束修改
1、歷史數(shù)據(jù)字段容許為空 ,但現(xiàn)在要求不能為空了;
2、原類型不允許為空,但現(xiàn)在允許可以為空了。
drop table default.tttt CREATE TABLE default.tttt( id String, name String ) ENGINE = MergeTree PARTITION BY id ORDER BY id SETTINGS index_granularity = 8192
嘗試插入數(shù)據(jù)
insert into `default`.tttt values ('0',null)-- 失敗DB::Exception: Expression returns value NULL, that is out of range of type String, at: null)
insert into `default`.tttt values ('1','name1'),('2','name2') --成功select * from `default`.tttt
id|name |
--|-----|
2 |name2|
1 |name1|
嘗試由Nullable轉(zhuǎn)換成非空類型
alter table `default`.tttt MODIFY COLUMN name Nullable(String) --成功
插入一個空值,用于后面的測試:
insert into `default`.tttt values ('3',null) --成功select * from `default`.tttt
id|name |
--|-----|
2 |name2|
1 |name1|
3 | |
再嘗試由Nullable轉(zhuǎn)換成非空類型
alter table `default`.tttt MODIFY COLUMN name String --失敗,因為記錄中存在null值
DB::Exception: Cannot convert NULL value to non-Nullable type (version 19.9.2.4 (official build))
CREATE TABLE default.tttt2( id Nullable(String), name Nullable(String) ) ENGINE = MergeTree PARTITION BY id ORDER BY id SETTINGS index_granularity = 8192
創(chuàng)建失敗,允許為空值不能用于排序 DB::Exception: Sorting key cannot contain nullable columns (version 19.9.2.4 (official build))
CREATE TABLE default.tttt2( id String, name Nullable(String) ) ENGINE = MergeTree PARTITION BY id ORDER BY id SETTINGS index_granularity = 8192 --成功 --直接用空表轉(zhuǎn)換類型 alter table `default`.tttt2 MODIFY COLUMN name String --成功。
結(jié)論
1、空表,Nullable與非空類型可以互轉(zhuǎn);
2、Nullable字段,如果記錄不帶有Null值,可以從Nullable轉(zhuǎn)成非空類型;
3、含有null值的字段不允許轉(zhuǎn)成非空類型;
4、Nullable字段不允許用于order by;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- ClickHouse數(shù)據(jù)庫的監(jiān)控與運維:監(jiān)控指標(biāo)、監(jiān)控工具、運維策略、故障處理
- clickhouse遠(yuǎn)程連接以及用戶名密碼設(shè)置方式
- 在docker中搭建部署clickhouse過程
- clickhouse數(shù)據(jù)庫刪除數(shù)據(jù)的五種方式
- clickhouse復(fù)雜時間格式的轉(zhuǎn)換方式
- 關(guān)于clickhouse幾種create table的情況
- clickhouse分布式表的操作示例詳解
- clickhouse系統(tǒng)表日志清理方式詳解
- 數(shù)據(jù)分析數(shù)據(jù)庫ClickHouse在大數(shù)據(jù)領(lǐng)域應(yīng)用實踐
- 以示例講解Clickhouse Docker集群部署以及配置
- ClickHouse在高并發(fā)寫入場景下的性能優(yōu)化實踐(CPU利用率飆升)
相關(guān)文章
MySQL性能優(yōu)化之max_connections配置參數(shù)淺析
這篇文章主要介紹了MySQL性能優(yōu)化之max_connections配置參數(shù)淺析,本文著重講解了3種配置max_connections參數(shù)的方法,需要的朋友可以參考下2014-07-07
MySQL性能優(yōu)化之如何從底層原理到實戰(zhàn)落地
本文將融合底層理論與實戰(zhàn)經(jīng)驗,構(gòu)建“原理認(rèn)知-問題定位-優(yōu)化實施-工程保障”的完整體系,助力開發(fā)者實現(xiàn)MySQL性能的精準(zhǔn)提升,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2026-01-01
mysql中自增auto_increment功能的相關(guān)設(shè)置及問題
mysql中的自增auto_increment功能相信每位phper都用過,本文就為大家分享一下mysql字段自增功能的具體查看及設(shè)置方法2012-12-12
淺談MySQL查詢出的值為NULL和N/A和空值的區(qū)別
本文主要介紹了淺談MySQL查詢出的值為NULL和N/A和空值的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Mysql清空表數(shù)據(jù)庫命令truncate和delete詳解
這篇文章主要介紹了Mysql數(shù)據(jù)庫清空表truncate和delete的相關(guān)知識,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06

