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

359 lines
16 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
machine_translated: true
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
toc_priority: 41
toc_title: "\u305D\u306E\u4ED6"
---
# その他のクエリ {#miscellaneous-queries}
## ATTACH {#attach}
このクエリはまったく同じです `CREATE` でも
- 言葉の代わりに `CREATE` それは単語を使用します `ATTACH`.
- クエリはディスク上にデータを作成するのではなく、データがすでに適切な場所にあると仮定し、テーブルに関する情報をサーバーに追加するだけです。
アタッチクエリを実行すると、サーバーはテーブルの存在を知ります。
テーブルが以前にデタッチされた場合 (`DETACH`)、その構造が知られていることを意味する、あなたは構造を定義せずに省略形を使用することができます。
``` sql
ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
```
このクエリは、サーバーの起動時に使用されます。 サーバーに店舗のテーブルメタデータとしてファイル `ATTACH` 単に起動時に実行されるクエリ(サーバー上で明示的に作成されるシステムテーブルを除く)。
## CHECK TABLE {#check-table}
表のデータが破損しているかどうかを確認します。
``` sql
CHECK TABLE [db.]name
```
その `CHECK TABLE` queryは、実際のファイルサイズと、サーバーに格納されている期待値を比較します。 ファイルサイズが格納された値と一致しない場合は、データが破損していることを意味します。 このが発生する可能性があります、例えば、システムがクラッシュ時のクエリを実行します。
クエリ応答には、 `result` 単一行の列。 行の値は次のとおりです
[ブール値](../../sql-reference/data-types/boolean.md) タイプ:
- 0-テーブル内のデータが破損しています。
- 1-データは整合性を維持します。
その `CHECK TABLE` クエリは以下のテーブルエンジン:
- [ログ](../../engines/table-engines/log-family/log.md)
- [TinyLog](../../engines/table-engines/log-family/tinylog.md)
- [ストリップログ](../../engines/table-engines/log-family/stripelog.md)
- [メルゲツリー族](../../engines/table-engines/mergetree-family/mergetree.md)
これは、テーブルが別のテーブルエンジンの原因となる例外です。
からのエンジン `*Log` 家族は失敗の自動データ回復を提供しない。 使用する `CHECK TABLE` タイムリーにデータ損失を追跡するためのクエリ。
のために `MergeTree` ファミリーエンジン `CHECK TABLE` クエリを示すステータス確認のための個人データのテーブルに現地サーバーです。
**データが破損している場合**
テーブルが破損している場合は、破損していないデータを別のテーブルにコピーできます。 これを行うには:
1. 破損したテーブルと同じ構造を持つ新しいテーブルを作成します。 これを行うにはクエリを実行します `CREATE TABLE <new_table_name> AS <damaged_table_name>`.
2. セット [max_threads](../../operations/settings/settings.md#settings-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 {#misc-describe-table}
``` sql
DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]
```
次の値を返します `String` タイプ列:
- `name` — Column name.
- `type`— Column type.
- `default_type` — Clause that is used in [既定の式](create.md#create-default-values) (`DEFAULT`, `MATERIALIZED` または `ALIAS`). 既定の式が指定されていない場合、Columnには空の文字列が含まれます。
- `default_expression` — Value specified in the `DEFAULT` 句。
- `comment_expression` — Comment text.
入れ子になったデータ構造は “expanded” 形式。 各列は、ドットの後に名前を付けて別々に表示されます。
## DETACH {#detach}
に関する情報を削除します。 name サーバーからのテーブル。 サーバーは、テーブルの存在を知ることを停止します。
``` sql
DETACH TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]
```
テーブルのデータまたはメタデータは削除されません。 次のサーバー起動時に、サーバーはメタデータを読み取り、テーブルについて再度確認します。
同様に、 “detached” テーブルはを使用して再付すことができます `ATTACH` クエリ(メタデータが格納されていないシステムテーブルを除く)。
ありません `DETACH DATABASE` クエリ。
## DROP {#drop}
このクエリ慮して、調教メニューを組み立て: `DROP DATABASE``DROP TABLE`.
``` sql
DROP DATABASE [IF EXISTS] db [ON CLUSTER cluster]
```
内部のすべてのテーブルを削除 db データベースを削除します。 db データベース自体。
もし `IF EXISTS` データベースが存在しない場合、エラーは返されません。
``` sql
DROP [TEMPORARY] TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]
```
テーブルを削除します。
もし `IF EXISTS` テーブルが存在しない場合、またはデータベースが存在しない場合、エラーは返されません。
DROP DICTIONARY [IF EXISTS] [db.]name
辞書を削除します。
もし `IF EXISTS` テーブルが存在しない場合、またはデータベースが存在しない場合、エラーは返されません。
## DROP USER {#drop-user-statement}
ユーザーを削除します。
### 構文 {#drop-user-syntax}
``` sql
DROP USER [IF EXISTS] name [,...] [ON CLUSTER cluster_name]
```
## DROP ROLE {#drop-role-statement}
ロールを削除します。
削除された役割は、付与されたすべてのエンティティから取り消されます。
### 構文 {#drop-role-syntax}
``` sql
DROP ROLE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]
```
## DROP ROW POLICY {#drop-row-policy-statement}
行ポリシーを削除します。
削除行の政策が取り消すべての主体で割り当てられます。
### 構文 {#drop-row-policy-syntax}
``` sql
DROP [ROW] POLICY [IF EXISTS] name [,...] ON [database.]table [,...] [ON CLUSTER cluster_name]
```
## DROP QUOTA {#drop-quota-statement}
クォータを削除します。
削除枠が取り消すべての主体で割り当てられます。
### 構文 {#drop-quota-syntax}
``` sql
DROP QUOTA [IF EXISTS] name [,...] [ON CLUSTER cluster_name]
```
## DROP SETTINGS PROFILE {#drop-settings-profile-statement}
クォータを削除します。
削除枠が取り消すべての主体で割り当てられます。
### 構文 {#drop-settings-profile-syntax}
``` sql
DROP [SETTINGS] PROFILE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]
```
## EXISTS {#exists-statement}
``` sql
EXISTS [TEMPORARY] [TABLE|DICTIONARY] [db.]name [INTO OUTFILE filename] [FORMAT format]
```
単一を返します `UInt8`-単一の値を含む列を入力します `0` テーブルまたはデータベースが存在しない場合、または `1` 指定されたデータベースにテーブルが存在する場合。
## KILL QUERY {#kill-query-statement}
``` sql
KILL QUERY [ON CLUSTER cluster]
WHERE <where expression to SELECT FROM system.processes query>
[SYNC|ASYNC|TEST]
[FORMAT format]
```
現在実行中のクエリを強制的に終了しようとします。
終了するクエリがシステムから選択されます。で定義された基準を使用してテーブルを処理します `WHERE` の節 `KILL` クエリ。
例:
``` sql
-- 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}
``` sql
KILL MUTATION [ON CLUSTER cluster]
WHERE <where expression to SELECT FROM system.mutations query>
[TEST]
[FORMAT format]
```
取り消しと削除を試みます [突然変異](alter.md#alter-mutations) 現在実行中です 取り消すべき突然変異はから選ばれます [`system.mutations`](../../operations/system-tables.md#system_tables-mutations) によって指定されたフィルタを使用する表 `WHERE` の節 `KILL` クエリ。
テストクエリ (`TEST`)ユーザーの権限のみをチェックし、停止するクエリのリストを表示します。
例:
``` sql
-- 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 {#misc_operations-optimize}
``` sql
OPTIMIZE TABLE [db.]name [ON CLUSTER cluster] [PARTITION partition | PARTITION ID 'partition_id'] [FINAL] [DEDUPLICATE]
```
このクエリは、テーブルエンジンを使用してテーブルのデータ部分の予定外のマージを初期化しようとします。 [メルゲツリー](../../engines/table-engines/mergetree-family/mergetree.md) 家族だ
その `OPTMIZE` クエリは、 [マテリアライズドビュー](../../engines/table-engines/special/materializedview.md) そして、 [バッファ](../../engines/table-engines/special/buffer.md) エンジンだ その他のテーブルエンジンなサポート。
とき `OPTIMIZE` と共に使用されます [複製マージツリー](../../engines/table-engines/mergetree-family/replication.md) テーブルエンジンのファミリでは、ClickHouseはマージ用のタスクを作成し、すべてのードで実行を待機します。 `replication_alter_partitions_sync` 設定が有効になっています)。
- もし `OPTIMIZE` 何らかの理由でマージを実行せず、クライアントに通知しません。 通知を有効にするには、 [optimize_throw_if_noop](../../operations/settings/settings.md#setting-optimize_throw_if_noop) 設定。
- を指定した場合 `PARTITION` 指定したパーティションのみが最適化されます。 [パーティション式の設定方法](alter.md#alter-how-to-specify-part-expr).
- 指定した場合 `FINAL`、最適化は、すべてのデータが一つの部分に既にある場合でも実行されます。
- 指定した場合 `DEDUPLICATE` その後、完全に同一の行が重複除外されます(すべての列が比較されます)。
!!! warning "警告"
`OPTIMIZE` できない修正 “Too many parts” エラー
## RENAME {#misc_operations-rename}
テーブルの名前を変更します。
``` sql
RENAME TABLE [db11.]name11 TO [db12.]name12, [db21.]name21 TO [db22.]name22, ... [ON CLUSTER cluster]
```
すべてのテーブル名変更"グローバルチェンジにおけるロックしなければなりません。 テーブルの名前を変更することは簡単な操作です。 TOの後に別のデータベースを指定した場合、表はこのデータベースに移動されます。 しかし、そのディレクトリのデータベースに格納してある必要がある同一ファイルシステム(それ以外の場合、エラーを返す。
## SET {#query-set}
``` sql
SET param = value
```
割り当て `value` に `param` [設定](../../operations/settings/index.md) 現在のセッションの場合。 変更できません [サーバー設定](../../operations/server-configuration-parameters/index.md) こっちだ
指定した設定プロファイルのすべての値を単一のクエリで設定することもできます。
``` sql
SET profile = 'profile-name-from-the-settings-file'
```
詳細については、 [設定](../../operations/settings/settings.md).
## SET ROLE {#set-role-statement}
現在のユーザーのロールを有効にします。
### 構文 {#set-role-syntax}
``` sql
SET ROLE {DEFAULT | NONE | role [,...] | ALL | ALL EXCEPT role [,...]}
```
## SET DEFAULT ROLE {#set-default-role-statement}
既定のロールをユーザーに設定します。
デフォルトの役割を自動的に起動されたユーザーログインします。 既定として設定できるのは、以前に付与されたロールのみです。 ロールがユーザーに付与されていない場合、ClickHouseは例外をスローします。
### 構文 {#set-default-role-syntax}
``` sql
SET DEFAULT ROLE {NONE | role [,...] | ALL | ALL EXCEPT role [,...]} TO {user|CURRENT_USER} [,...]
```
### 例 {#set-default-role-examples}
複数の既定のロールをユーザーに設定する:
``` sql
SET DEFAULT ROLE role1, role2, ... TO user
```
付与されたすべてのロールを既定のユーザーに設定します:
``` sql
SET DEFAULT ROLE ALL TO user
```
ユーザーからの既定の役割の削除:
``` sql
SET DEFAULT ROLE NONE TO user
```
セットの付与の役割としてデフォルトの例外を除き、きっ:
``` sql
SET DEFAULT ROLE ALL EXCEPT role1, role2 TO user
```
## TRUNCATE {#truncate-statement}
``` sql
TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]
```
表からすべてのデータを削除します。 とき句 `IF EXISTS` テーブルが存在しない場合、クエリはエラーを返します。
その `TRUNCATE` クエリはサポートされません [表示](../../engines/table-engines/special/view.md), [ファイル](../../engines/table-engines/special/file.md), [URL](../../engines/table-engines/special/url.md) と [Null](../../engines/table-engines/special/null.md) テーブルエンジン。
## USE {#use}
``` sql
USE db
```
セッションの現在のデータベースを設定できます。
現在のデータベースは、データベースがクエリで明示的に定義されていない場合、テーブルの検索に使用されます。
セッションの概念がないため、HTTPプロトコルを使用する場合は、このクエリを実行できません。
[元の記事](https://clickhouse.tech/docs/en/query_language/misc/) <!--hide-->