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操作は対象テーブルに対する排他ロックを取得します。