ClickHouse/docs/ja/engines/database-engines/postgresql.md
2024-11-18 11:58:58 +09:00

5.5 KiB

slug sidebar_position sidebar_label
/ja/engines/database-engines/postgresql 40 PostgreSQL

PostgreSQL

リモートの PostgreSQL サーバー上のデータベースに接続できるようにします。ClickHouse と PostgreSQL の間でデータを交換するための読み書き操作(SELECTINSERT クエリ)をサポートしています。

SHOW TABLES および DESCRIBE TABLE クエリを使用して、リモート PostgreSQL からのテーブルリストとテーブル構造にリアルタイムでアクセスできます。

テーブル構造の変更(ALTER TABLE ... ADD|DROP COLUMN)をサポートします。use_table_cache パラメーター(以下のエンジンパラメーターを参照)が 1 に設定されている場合、テーブル構造はキャッシュされ、変更がチェックされませんが、DETACH および ATTACH クエリで更新できます。

データベースの作成

CREATE DATABASE test_database
ENGINE = PostgreSQL('host:port', 'database', 'user', 'password'[, `schema`, `use_table_cache`]);

エンジンパラメーター

  • host:port — PostgreSQL サーバーのアドレス。
  • database — リモートデータベース名。
  • user — PostgreSQL ユーザー。
  • password — ユーザーパスワード。
  • schema — PostgreSQL スキーマ。
  • use_table_cache — データベースのテーブル構造をキャッシュするかどうかを定義します。オプション。デフォルト値: 0

データ型のサポート

PostgreSQL ClickHouse
DATE Date
TIMESTAMP DateTime
REAL Float32
DOUBLE Float64
DECIMAL, NUMERIC Decimal
SMALLINT Int16
INTEGER Int32
BIGINT Int64
SERIAL UInt32
BIGSERIAL UInt64
TEXT, CHAR String
INTEGER Nullable(Int32)
ARRAY Array

使用例

ClickHouse でのデータベースが、PostgreSQL サーバーとデータを交換します:

CREATE DATABASE test_database
ENGINE = PostgreSQL('postgres1:5432', 'test_database', 'postgres', 'mysecretpassword', 'schema_name',1);
SHOW DATABASES;
┌─name──────────┐
│ default       │
│ test_database │
│ system        │
└───────────────┘
SHOW TABLES FROM test_database;
┌─name───────┐
│ test_table │
└────────────┘

PostgreSQL テーブルからデータを読み取ります:

SELECT * FROM test_database.test_table;
┌─id─┬─value─┐
│  1 │     2 │
└────┴───────┘

PostgreSQL テーブルにデータを書き込みます:

INSERT INTO test_database.test_table VALUES (3,4);
SELECT * FROM test_database.test_table;
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘

PostgreSQL でテーブル構造が変更されたとします:

postgre> ALTER TABLE test_table ADD COLUMN data Text

データベースを作成するときに use_table_cache パラメーターが 1 に設定されていたため、ClickHouse のテーブル構造はキャッシュされ、変更されていませんでした:

DESCRIBE TABLE test_database.test_table;
┌─name───┬─type──────────────┐
│ id     │ Nullable(Integer) │
│ value  │ Nullable(Integer) │
└────────┴───────────────────┘

テーブルをデタッチして再びアタッチした後、構造が更新されました:

DETACH TABLE test_database.test_table;
ATTACH TABLE test_database.test_table;
DESCRIBE TABLE test_database.test_table;
┌─name───┬─type──────────────┐
│ id     │ Nullable(Integer) │
│ value  │ Nullable(Integer) │
│ data   │ Nullable(String)  │
└────────┴───────────────────┘

関連コンテンツ