ClickHouseでのテーブル操作ガイド

ClickHouseにおけるテーブル操作はINSERT/DROP/SELECT/ALTERの4大カテゴリに分類されます。特にALTERコマンドは複雑な操作を提供し、以下の主要機能を含みます:

ALTER操作の主な機能

  • データ更新:行レベルの値更新・削除
  • 構造変更:カラム・インデックスの追加/削除/変更
  • パーティション管理:パーティション操作・TTL設定
  • メタデータ制御:コメント・設定変更

実践的な操作例(MergeTreeエンジン)

1. テーブル作成とテストデータ投入

-- テーブル定義
CREATE TABLE user_profiles (
  user_id UInt32,
  account_name String,
  registration_date Date,
  created_at DateTime,
  remarks Nullable(String)
) ENGINE = MergeTree()
     ORDER BY (user_id, registration_date)
     PRIMARY KEY user_id
     SETTINGS index_granularity=8192;

データインポート方法

-- インタラクティブ挿入
INSERT INTO user_profiles VALUES 
(100001, 'tanaka', toDate(NOW()), NOW(), 'test'),
(100002, 'suzuki', toDate(NOW()), NOW(), NULL);

-- バルクインポート例
cat data.csv | clickhouse-client --query="INSERT INTO user_profiles FORMAT CSV"

2. データ更新操作

-- 条件付き更新
ALTER TABLE user_profiles 
UPDATE account_name = 'new_account' 
WHERE user_id = 100001 AND account_name = 'tanaka';

3. データ削除操作

-- 特定条件のレコード削除
ALTER TABLE user_profiles 
DELETE WHERE user_id = 100001;

4. スキーマ変更操作

4.1 カラム追加

ALTER TABLE user_profiles 
ADD COLUMN contact_info String DEFAULT 'N/A';

4.2 カラム削除

ALTER TABLE user_profiles 
DROP COLUMN contact_info;

4.3 カラム型変更

-- NULL許容カラムのデフォルト値設定
ALTER TABLE user_profiles 
MODIFY COLUMN remarks Nullable(String) DEFAULT 'no_comment';

4.4 カラムコメント

-- フィールド説明追加
ALTER TABLE user_profiles 
COMMENT COLUMN remarks '追加情報用カラム';

5. メタデータ操作の特殊ケース

主キーカラムの型変更は通常のALTERでは不可能で、メタデータファイルの手動編集が必要です:

-- メタデータファイル例
/etc/clickhouse-server/metadata/default/user_profiles.sql

-- 編集例(UserIDの型変更後)
ATTACH TABLE user_profiles
(
    `user_id` String,
    `account_name` String,
    ...
)

6. サポートされる操作一覧

操作カテゴリサポート状況
MergeTree系エンジン完全サポート
Merge/Distributedエンジン制限付きサポート
Memory系エンジン非サポート
注意:すべてのALTER操作は対象テーブルに対する排他ロックを取得します。

タグ: ClickHouse データベース SQL MergeTree ALTER TABLE

7月5日 17:18 投稿