CK基本使用和常見問題

前言:本文總結工作最常用的場景,但從使用上對CK進行基礎講解。

1.客戶端連接

1.1 命令行使用客戶端 連接ck

clickhouse-client -h 10.20.123.19 -udefault --password 123 --port 9000 -m

1.2 使用python連接ck

from clickhouse_driver import Client
# 軌跡庫連接信息
GuestDatabase
track_conn = Client(host=cf.get('SourceTrackDatabase', 'host'),
                  database=cf.get('SourceTrackDatabase', 'database'),
                  port=cf.get('SourceTrackDatabase', 'port'),
                  user=cf.get('SourceTrackDatabase', 'user'),
                  password=cf.get('SourceTrackDatabase', 'password'))

1.3 JDBC

jdbc:clickhouse://192.168.182.12:8123/tuew
ru.yandex.clickhouse.ClickHouseDriver

1.4 推薦可視化軟件

  • Dbeaver
  • JetBrains DataGrip

2.常見語句示例

# 創建數據庫
create database dbName on cluster  clusterName

# 創建分佈式表
# 第一步 創建實體表
create table dnName.tablesName on cluster clusterName(
    fcsrq  Nullable(Datetime) COMMENT '出生日期',
    fjgssx  Nullable(String) COMMENT '籍貫',
    flrsj  Datetime  COMMENT '錄入時間',
    fsg  Nullable(UInt8) COMMENT '身高',
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/dnName_tablesName ', '{replica}') PARTITION BY toYYYYMM(flrsj) PRIMARY KEY toYYYYMMDDhhmmss(flrsj)
ORDER BY (toYYYYMMDDhhmmss(flrsj)) SAMPLE BY toYYYYMMDDhhmmss(flrsj) SETTINGS index_granularity = 8192;

# 第二步 將實體表進行關聯  創建all表
create table dnName.tablesName_all on cluster clusterName AS dnName.tablesName ENGINE = Distributed(cluster_name , dnName, tablesName , rand());

# 刪除表
drop table  tablesName

# 查看結構 查看註釋  因爲很多可視化工具無法看到comment
describe table tablesName

# 插入多條數據(單挑同樣適用)
insert into dbName.tablesName(id,name,levle,remark) values ('11','MK',100,'通訊識別碼') ('11','IK',110,'設備碼') ;

註釋:
1.建完分佈式表後對所有操作都是基於all表的。
2.刪除all表,不會刪除實體數據。

3.查看元數據

  • 元數據庫名爲system,只需要查看相應的表即可,比如有:建表語句儲存地址、zookeeper的地址等
  • 查看zookeeper的數據可視化工具推薦:ZooInspector (百度很多下載地址)
  • ZooInspector使用連接
  • clickhouse語句和zookeeper使用結合說明 鏈接

4.常見錯誤(未完持續更新中。。)

4.1建表 報錯

報錯信息

 DB::Exception: Data directory for table already containing data parts - probably it was unclean DROP table or manual intervention. You must either clear directory by hand or use ATTACH TABLE instead of CREATE TABLE if you need to use that parts..

原因

表的實體數據在,但是元數據的.sql文件確實,只需要修復下表結構即可。

解決方法:

使用ATTACH 創建語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章