# PostgreSQL経由でEMQX Tablesに接続する

EMQX TablesはPostgreSQL v3ワイヤープロトコルによるアクセスをサポートしています。これにより、ほとんどの標準的なPostgreSQL互換ツールやドライバーがプロトコルレベルで正常に接続可能です。

> **注意:** 接続はPostgreSQLワイヤープロトコルを利用していますが、EMQX TablesはPostgreSQLの完全なSQL方言をサポートしていません。標準的なSQL機能やステートメントの一部は利用できない場合があります。

接続はTLS暗号化により保護されています。

## 接続パラメータ

以下の情報を使用して接続してください。

> これらの認証情報は、EMQX Tablesのコンソール内の**Deployment Overview**ページで確認できます。

- **ホスト**: `{YOUR_EMQX_TABLES_PUBLIC_HOST}`
- **ポート**: `4002`
- **データベース**: `{YOUR_EMQX_TABLES_DB_NAME}`
- **ユーザー名**: `{YOUR_EMQX_TABLES_USERNAME}`
- **パスワード**: `{YOUR_EMQX_TABLES_PASSWORD}`

## PostgreSQL CLI（`psql`）

標準の`psql`コマンドラインツールを使ってEMQX Tablesに接続できます。

```bash
psql -h {HOST} -p 4003 -U {USER} -d {DB_NAME} -W
```

## 接続文字列

`psycopg`や`rust-postgres`などの互換クライアントライブラリで以下の形式を使用します。

```text
host={HOST} port=4003 dbname={DB_NAME} user={USER} password=~~{PASSWORD}~~
```

## URL形式

PostgreSQL互換のJDBCやPythonクライアントで以下の形式を使用してください。

**JDBC（Java）:**

```text
jdbc:postgresql://{HOST}:4003/{DB_NAME}?user={USER}&password=~~{PASSWORD}~~&ssl=true
```

**Python / その他:**

```text
postgresql://{USER}:~~{PASSWORD}~~@{HOST}:4003/{DB_NAME}
```

## Postgres Foreign Data Wrapper（FDW）

`postgres_fdw`を使って、EMQX Tablesを別のPostgreSQLインスタンスに統合できます。`{HOST}`、`{DB_NAME}`、`{USER}`、`{PASSWORD}`は実際のEMQX Tablesの接続情報に置き換えてください。

```sql
CREATE SERVER emqx_tables
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host '{HOST}', dbname '{DB_NAME}', port '4003');

CREATE USER MAPPING FOR postgres
SERVER emqx_tables
OPTIONS (user '{USER}', password '~~{PASSWORD}~~');
```
