ClickHouse/docs/ja/sql-reference/statements/misc.md
2020-10-13 20:23:29 +03:00

16 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 41 その他

その他のクエリ

ATTACH

このクエリはまったく同じです CREATE でも

  • 言葉の代わりに CREATE それは単語を使用します ATTACH.
  • クエリはディスク上にデータを作成するのではなく、データがすでに適切な場所にあると仮定し、テーブルに関する情報をサーバーに追加するだけです。 アタッチクエリを実行すると、サーバーはテーブルの存在を知ります。

テーブルが以前にデタッチされた場合 (DETACH)、その構造が知られていることを意味する、あなたは構造を定義せずに省略形を使用することができます。

ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]

このクエリは、サーバーの起動時に使用されます。 サーバーに店舗のテーブルメタデータとしてファイル ATTACH 単に起動時に実行されるクエリ(サーバー上で明示的に作成されるシステムテーブルを除く)。

CHECK TABLE

表のデータが破損しているかどうかを確認します。

CHECK TABLE [db.]name

その CHECK TABLE queryは、実際のファイルサイズと、サーバーに格納されている期待値を比較します。 ファイルサイズが格納された値と一致しない場合は、データが破損していることを意味します。 このが発生する可能性があります、例えば、システムがクラッシュ時のクエリを実行します。

クエリ応答には、 result 単一行の列。 行の値は次のとおりです ブール値 タイプ:

  • 0-テーブル内のデータが破損しています。
  • 1-データは整合性を維持します。

その CHECK TABLE クエリは以下のテーブルエンジン:

これは、テーブルが別のテーブルエンジンの原因となる例外です。

からのエンジン *Log 家族は失敗の自動データ回復を提供しない。 使用する CHECK TABLE タイムリーにデータ損失を追跡するためのクエリ。

のために MergeTree ファミリーエンジン CHECK TABLE クエリを示すステータス確認のための個人データのテーブルに現地サーバーです。

データが破損している場合

テーブルが破損している場合は、破損していないデータを別のテーブルにコピーできます。 これを行うには:

  1. 破損したテーブルと同じ構造を持つ新しいテーブルを作成します。 これを行うにはクエリを実行します CREATE TABLE <new_table_name> AS <damaged_table_name>.
  2. セット max_threads 単一のスレッドで次のクエリを処理するには、値を1に設定します。 このクエリ SET max_threads = 1.
  3. クエリの実行 INSERT INTO <new_table_name> SELECT * FROM <damaged_table_name>. この要求により、破損していないデータが破損した表から別の表にコピーされます。 破損した部分の前のデータのみがコピーされます。
  4. 再起動 clickhouse-client リセットするには max_threads 値。

DESCRIBE TABLE

DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]

次の値を返します String タイプ列:

  • name — Column name.
  • type— Column type.
  • default_type — Clause that is used in 既定の式 (DEFAULT, MATERIALIZED または ALIAS). 既定の式が指定されていない場合、Columnには空の文字列が含まれます。
  • default_expression — Value specified in the DEFAULT 句。
  • comment_expression — Comment text.

入れ子になったデータ構造は “expanded” 形式。 各列は、ドットの後に名前を付けて別々に表示されます。

DETACH

に関する情報を削除します。 name サーバーからのテーブル。 サーバーは、テーブルの存在を知ることを停止します。

DETACH TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

テーブルのデータまたはメタデータは削除されません。 次のサーバー起動時に、サーバーはメタデータを読み取り、テーブルについて再度確認します。 同様に、 “detached” テーブルはを使用して再付すことができます ATTACH クエリ(メタデータが格納されていないシステムテーブルを除く)。

ありません DETACH DATABASE クエリ。

DROP

このクエリ慮して、調教メニューを組み立て: DROP DATABASEDROP TABLE.

DROP DATABASE [IF EXISTS] db [ON CLUSTER cluster]

内部のすべてのテーブルを削除 db データベースを削除します。 db データベース自体。 もし IF EXISTS データベースが存在しない場合、エラーは返されません。

DROP [TEMPORARY] TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

テーブルを削除します。 もし IF EXISTS テーブルが存在しない場合、またはデータベースが存在しない場合、エラーは返されません。

DROP DICTIONARY [IF EXISTS] [db.]name

辞書を削除します。 もし IF EXISTS テーブルが存在しない場合、またはデータベースが存在しない場合、エラーは返されません。

DROP USER

ユーザーを削除します。

構文

DROP USER [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

DROP ROLE

ロールを削除します。

削除された役割は、付与されたすべてのエンティティから取り消されます。

構文

DROP ROLE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

DROP ROW POLICY

行ポリシーを削除します。

削除行の政策が取り消すべての主体で割り当てられます。

構文

DROP [ROW] POLICY [IF EXISTS] name [,...] ON [database.]table [,...] [ON CLUSTER cluster_name]

DROP QUOTA

クォータを削除します。

削除枠が取り消すべての主体で割り当てられます。

構文

DROP QUOTA [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

DROP SETTINGS PROFILE

クォータを削除します。

削除枠が取り消すべての主体で割り当てられます。

構文

DROP [SETTINGS] PROFILE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

EXISTS

EXISTS [TEMPORARY] [TABLE|DICTIONARY] [db.]name [INTO OUTFILE filename] [FORMAT format]

単一を返します UInt8-単一の値を含む列を入力します 0 テーブルまたはデータベースが存在しない場合、または 1 指定されたデータベースにテーブルが存在する場合。

KILL QUERY

KILL QUERY [ON CLUSTER cluster]
  WHERE <where expression to SELECT FROM system.processes query>
  [SYNC|ASYNC|TEST]
  [FORMAT format]

現在実行中のクエリを強制的に終了しようとします。 終了するクエリがシステムから選択されます。で定義された基準を使用してテーブルを処理します WHERE の節 KILL クエリ。

例:

-- Forcibly terminates all queries with the specified query_id:
KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90'

-- Synchronously terminates all queries run by 'username':
KILL QUERY WHERE user='username' SYNC

読み取り専用ユーザーは、独自のクエリのみを停止できます。

既定では、非同期バージョンのクエリが使用されます (ASYNC)、クエリが停止したことの確認を待たない。

同期バージョン (SYNC)すべてのクエリが停止するのを待機し、停止すると各プロセスに関する情報を表示します。 応答には、 kill_status 列は、次の値を取ることができます:

  1. finished The query was terminated successfully.
  2. waiting Waiting for the query to end after sending it a signal to terminate.
  3. The other values explain why the query can't be stopped.

テストクエリ (TEST)ユーザーの権限のみをチェックし、停止するクエリのリストを表示します。

KILL MUTATION

KILL MUTATION [ON CLUSTER cluster]
  WHERE <where expression to SELECT FROM system.mutations query>
  [TEST]
  [FORMAT format]

取り消しと削除を試みます 突然変異 現在実行中です 取り消すべき突然変異はから選ばれます system.mutations によって指定されたフィルタを使用する表 WHERE の節 KILL クエリ。

テストクエリ (TEST)ユーザーの権限のみをチェックし、停止するクエリのリストを表示します。

例:

-- Cancel and remove all mutations of the single table:
KILL MUTATION WHERE database = 'default' AND table = 'table'

-- Cancel the specific mutation:
KILL MUTATION WHERE database = 'default' AND table = 'table' AND mutation_id = 'mutation_3.txt'

The query is useful when a mutation is stuck and cannot finish (e.g. if some function in the mutation query throws an exception when applied to the data contained in the table).

突然変異によって既に行われた変更はロールバックされません。

OPTIMIZE

OPTIMIZE TABLE [db.]name [ON CLUSTER cluster] [PARTITION partition | PARTITION ID 'partition_id'] [FINAL] [DEDUPLICATE]

このクエリは、テーブルエンジンを使用してテーブルのデータ部分の予定外のマージを初期化しようとします。 メルゲツリー 家族だ

その OPTMIZE クエリは、 マテリアライズドビュー そして、 バッファ エンジンだ その他のテーブルエンジンなサポート。

とき OPTIMIZE と共に使用されます 複製マージツリー テーブルエンジンのファミリでは、ClickHouseはマージ用のタスクを作成し、すべてのードで実行を待機します。 replication_alter_partitions_sync 設定が有効になっています)。

  • もし OPTIMIZE 何らかの理由でマージを実行せず、クライアントに通知しません。 通知を有効にするには、 optimize_throw_if_noop 設定。
  • を指定した場合 PARTITION 指定したパーティションのみが最適化されます。 パーティション式の設定方法.
  • 指定した場合 FINAL、最適化は、すべてのデータが一つの部分に既にある場合でも実行されます。
  • 指定した場合 DEDUPLICATE その後、完全に同一の行が重複除外されます(すべての列が比較されます)。

!!! warning "警告" OPTIMIZE できない修正 “Too many parts” エラー

RENAME

テーブルの名前を変更します。

RENAME TABLE [db11.]name11 TO [db12.]name12, [db21.]name21 TO [db22.]name22, ... [ON CLUSTER cluster]

すべてのテーブル名変更"グローバルチェンジにおけるロックしなければなりません。 テーブルの名前を変更することは簡単な操作です。 TOの後に別のデータベースを指定した場合、表はこのデータベースに移動されます。 しかし、そのディレクトリのデータベースに格納してある必要がある同一ファイルシステム(それ以外の場合、エラーを返す。

SET

SET param = value

割り当て valueparam 設定 現在のセッションの場合。 変更できません サーバー設定 こっちだ

指定した設定プロファイルのすべての値を単一のクエリで設定することもできます。

SET profile = 'profile-name-from-the-settings-file'

詳細については、 設定.

SET ROLE

現在のユーザーのロールを有効にします。

構文

SET ROLE {DEFAULT | NONE | role [,...] | ALL | ALL EXCEPT role [,...]}

SET DEFAULT ROLE

既定のロールをユーザーに設定します。

デフォルトの役割を自動的に起動されたユーザーログインします。 既定として設定できるのは、以前に付与されたロールのみです。 ロールがユーザーに付与されていない場合、ClickHouseは例外をスローします。

構文

SET DEFAULT ROLE {NONE | role [,...] | ALL | ALL EXCEPT role [,...]} TO {user|CURRENT_USER} [,...]

複数の既定のロールをユーザーに設定する:

SET DEFAULT ROLE role1, role2, ... TO user

付与されたすべてのロールを既定のユーザーに設定します:

SET DEFAULT ROLE ALL TO user

ユーザーからの既定の役割の削除:

SET DEFAULT ROLE NONE TO user

セットの付与の役割としてデフォルトの例外を除き、きっ:

SET DEFAULT ROLE ALL EXCEPT role1, role2 TO user

TRUNCATE

TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

表からすべてのデータを削除します。 とき句 IF EXISTS テーブルが存在しない場合、クエリはエラーを返します。

その TRUNCATE クエリはサポートされません 表示, ファイル, URLNull テーブルエンジン。

USE

USE db

セッションの現在のデータベースを設定できます。 現在のデータベースは、データベースがクエリで明示的に定義されていない場合、テーブルの検索に使用されます。 セッションの概念がないため、HTTPプロトコルを使用する場合は、このクエリを実行できません。

元の記事