# PostgreSQL

このセクションでは、PostgreSQL ターゲット コネクタを使用して PostgreSQL ターゲットへの接続を構成する方法について説明します。PostgreSQL は、レプリケーション タスクのターゲットとしてのみ使用できます。PostgreSQL ターゲットに接続する前に、データベースで [必要な権限](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Permissi) を構成する必要があります。Data Movement gateway 経由で PostgreSQL に接続している場合は、[ドライバーのセットアップ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Driver) の説明に従ってドライバーをインストールする必要もあります。

PostgreSQL コネクタを使用する場合の制限と考慮事項については、「[制限と考慮事項](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Limitati)」を参照してください。

## 接続プロパティの設定

コネクタを構成するには、次の手順を実行します。

1. [接続] で、 [接続を作成] をクリックします。

2. PostgreSQL ターゲット コネクタを選択し、次の設定を行います。

### データ ターゲット

* データ ゲートウェイ：Data Movement gateway を使用する場合は、PostgreSQL ターゲットへの接続をテストするために使用するデータ ゲートウェイを選択します。これは、データ ソースへのアクセスに使用されたゲートウェイと同じである必要があります。

  情報メモ

  * このサブスクリプション ティアでは Data Movement gateway がサポートされていないため、Qlik Talend Cloud スターター サブスクリプションではこの項目を使用できません。

  * Data Movement gateway マシンに適切なドライバーをインストールする必要もあります。詳細については、以下の「[ドライバーのセットアップ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Driver)」を参照してください。

* クラウド プロバイダー: 必要に応じて次のいずれかを選択します。

  * なし - 次を使用する場合に選択します。

    * PostgreSQL オンプレミス
    * Amazon Aurora
    * Azure Database for PostgreSQL - フレキシブル サーバー
    * いいえ Data Movement gateway

  * Amazon RDS

    Amazon RDS for PostgreSQL の場合。

  * Google Cloud - 次を使用する場合に選択します。

    * Google Cloud SQL for PostgreSQL
    * PostgreSQL 用 Google Cloud AlloyDB

  * Microsoft Azure

    Microsoft Azure Database for PostgreSQL の場合。

* ホスト: PostgreSQL データベースがインストールされているコンピューターのホスト名または IP アドレスです

* ポート: データベースに接続するときに使用するポート。デフォルトは、5432 です。

### アカウントのプロパティ

ユーザー名とパスワード: PostgreSQL Server データベースへのアクセスを承認されたユーザーのユーザー名とパスワード。

### データベースのプロパティ

* データベース名: データベースを指定するには 2 つの方法があります。

  * 方法 1 - リストから選択: [Load databases] (データベースをロード) をクリックし、データベースを選択します。
  * 方法 2 - 手動: [Enter database name manually] (データベース名を手動で入力) を選択し、データベース名を入力します。

* SSL モード: 次のいずれかを選択します。

  * disable - 姓とパスワードのみで接続します。
  * allow - サーバーから要求された場合、暗号化された接続を確立します。
  * prefer - これが既定です。サーバーが暗号化された接続をサポートしている場合は暗号化された接続を確立し、暗号化された接続を確立できない場合は暗号化されていない接続にフォールバックします。
  * require - サーバーが暗号化された接続をサポートしている場合、暗号化された接続を確立します。暗号化された接続を確立できない場合、接続の試行は失敗します。
  * verify-ca - Required に似ていますが、構成された CA 証明書に対してサーバー認証局 (CA) 証明書も検証します。一致する有効な CA 証明書が見つからない場合、接続試行は失敗します。
  * verify-full - Verify CA に似ていますが、クライアント (Qlik Talend Data Integration など) がサーバーへの接続に使用するホスト名を、サーバーがクライアントに送信する証明書の ID と照合することで、ホスト名の ID 検証も実行します。クライアントは、接続に使用するホスト名がサーバー証明書の共通名の値と一致するかどうかを確認します。不一致がある場合、接続は失敗します。

* 信頼できる証明書: クライアント証明書ファイルを PEM 形式で発行した認証局 (CA)。

* クライアント証明書: サーバーから要求されたクライアント証明書をアップロードします。

* クライアント証明書キー: PEM 形式のクライアント秘密鍵ファイル。

* CRL: CRL 証明書。このファイルには、認証局によって取り消された証明書が含まれています。サーバー証明書がこのリストに表示されている場合、接続は失敗します。

* SSL 圧縮: データを暗号化する前に圧縮するには、このオプションを選択します。

* 最大ファイル サイズ (KB): CSV ファイルが PostgreSQL ターゲット データベースにロードされる前に、CSV ファイルの最大サイズ (KB 単位) を選択または入力します。既定値は 32000 KB です。

### 内部プロパティ

内部プロパティは、特殊なユース ケース向けであるため、ダイアログで公開されません。Qlik サポートによって指示があった場合にのみ使用する必要があります。

項目右側にある the 新規作成 icon と the キャンセル icon ボタンを使用して、必要に応じてプロパティを追加したり削除したりします。

### 名前

接続の表示名です。

## 前提条件

### 必要な権限

コネクタ設定で指定されたユーザーは、PostgreSQL データベースに登録されているユーザーである必要があります。

さらに、次の権限を付与する必要があります。

* Can login (ログイン可能)

* Create databases (データベースの作成)

  情報メモターゲットのスキーマがデータベースにすでに存在する場合、「データベースの作成」権限は必要ありません。

### ドライバーのセットアップ

driver のインストールは、ドライバー インストール ユーティリティを使用する (推奨) か、手動で実行できます。手動インストールは、ドライバー インストール ユーティリティで問題が発生した場合にのみ実行するようにしてください。

#### ドライバー インストール ユーティリティを使用したドライバーのインストール

このセクションでは、必要な driver のインストール方法を説明しました。このプロセスでは、必要な driver を自動的にダウンロード、インストール、設定するスクリプトを実行します。また、必要に応じて driver の更新やアンインストールを行うスクリプトを実行することもできます。

インストールの準備

* データ移動 ゲートウェイ サーバーに Python 3.6.x 以降 がインストールされていることを確認します。

  Python は、ほとんどの Linux 配布に前もってインストールされています。お使いのシステムにインストールされている Python のバージョンは、次のコマンドを実行することで確認できます。

  python3 --version

driver のインストール

driver をダウンロードしてインストールするには:

1. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

2. 次のコマンドを実行します:

   構文:

   ./install postgres

   アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、install postgres コマンドを再度実行します。

   それ以外の場合は、driver の EULA が表示されます。

3. 次のいずれかを実行します。

   * 何度も [Enter] を押すと、EULA 全体をスクロールできます。
   * 何度もスペースバーを押すと、EULA 全体をスピーディにスクロールできます。
   * q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。

4. 次のいずれかを実行します。

   * 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。

   * 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。

   * 「v」を入力して [Enter] を押すと、EULA が再表示されます。

   driver がインストールされます。

driver の更新

提供された driver をインストールする前に前のバージョンの driver をアンインストールしたい場合は、更新コマンドを実行します。

driver をダウンロードして更新するには:

1. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

2. 次のコマンドを実行します:

   構文:

   ./update postgres

   アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、update postgres コマンドを再度実行します。

   それ以外の場合は、driver の EULA が表示されます。

3. 次のいずれかを実行します。

   * 何度も [Enter] を押すと、EULA 全体をスクロールできます。
   * 何度もスペースバーを押すと、EULA 全体をスピーディにスクロールできます。
   * q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。

4. 次のいずれかを実行します。

   * 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。
   * 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。
   * 「v」を入力して [Enter] を押すと、最初から EULA をレビューできます。

   古い driver がアンインストールされ、新しい driver がインストールされます。

driver のアンインストール

driver をアンインストールする場合は、アンインストール コマンドを実行します。

driver をアンインストールするには:

1. このコネクタを使用するように構成されているすべてのタスクを停止します。

2. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

3. 次のコマンドを実行します:

   構文:

   ./uninstall postgres

   driver がアンインストールされます。

#### ドライバーとライブラリの手動インストール

自動ドライバーのインストールが正常に完了しなかった場合にのみ、driver を手動でインストールするようにしてください。

Data Movement gateway をインストールしたら、次の RPM ファイルをダウンロードします。ファイルへの直接ダウンロード リンクは、/opt/qlik/gateway/movement/drivers/manifests/postgres.yaml の binary-artifacts にあります。ダウンロードが完了したら、ファイルを Data Movement gateway マシンにコピーします。

Red Hat 9.x で Data Movement gateway がインストールされている場合、

* postgresql&lt;version&gt;-libs-&lt;version&gt;PGDG.rhel9.x86\_64.rpm
* postgresql&lt;version&gt;-&lt;version&gt;PGDG.rhel9.x86\_64.rpm
* postgresql&lt;version&gt;-odbc-&lt;version&gt;PGDG.rhel9.x86\_64。

Red Hat 8.x で Data Movement gateway がインストールされている場合、

* postgresql&lt;version&gt;-libs-&lt;version&gt;PGDG.rhel8.x86\_64.rpm
* postgresql&lt;version&gt;-&lt;version&gt;PGDG.rhel8.x86\_64.rpm
* postgresql&lt;version&gt;-odbc-&lt;version&gt;PGDG.rhel8.x86\_64.rpm

Data Movement gateway サーバーで、シェル プロンプトを開き、次の手順を実行します。

1. Data Movement gateway サービスを停止します。

   sudo systemctl stop repagent

2. オプションで、サービスが停止されたことを確認します。

   sudo systemctl status repagent

   ステータスは次のようになっているはずです。

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. RPM ファイルをインストールします。

4. 作業ディレクトリを &lt;Data Movement gateway\_Install\_Dir&gt;/bin に変更します。

5. 次のように、ドライバーの場所を `site_arep_login.sh` ファイルにコピーします。

   `echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/pgsql-<version>/lib" >> site_arep_login.sh`

   これにより、ドライバーが「LD\_LIBRARY\_PATH」に追加され、site\_arep\_login.sh ファイル内のドライバーの場所が更新されます。

6. 必要に応じて、ドライバーの場所がコピーされていることを確認します。

   ```
   cat site_arep_login.sh
                           
   ```

7. 次の例のように、`/etc/odbcinst.ini` ファイルに PostgreSQL のエントリが含まれていることを確認します。

   `[PostgreSQL]`

   `Description = PostgreSQL ODBC driver`

   `Driver = /usr/pgsql-13/lib/psqlodbc.so`

   `Setup = /usr/pgsql-13/lib/psqlodbcw.so`

   `UsageCount = 1`

8. Data Movement gateway サービスを起動します。

   sudo systemctl start repagent

9. 必要に応じて、サービスが開始されたことを確認します。

   sudo systemctl status repagent

   ステータスは次のようになっているはずです。

   Active: active (running) since &lt;timestamp&gt; ago

## 制限と考慮事項

PostgreSQL をレプリケーション ターゲットとして使用する場合、次の制限が適用されます。

* 重複レコードを含む主キー/一意のインデックスのないテーブルに対する UPDATE および DELETE 操作はサポートされていません。これらのテーブルに変更を加えると、ターゲット内のすべてのレコードに影響します。
* キーに LOB 列を含むテーブルは、バッチ最適化適用モードではサポートされていません。VARBINARY 列がソース テーブル キーとして使用される場合、BYTEA 列がターゲットに作成されます。これにより、バッチ最適化適用モードで予期しない動作が発生します。回避策として、SQLite HEX 関数を使用して VARBINARY を VARCHAR に変換することをお勧めします。

## データ型

ネイティブ データ タイプの情報は保持され、データセット ビューの [ネイティブ データ タイプ] 列に表示されます。列が表示されない場合は、データ セット ビューの列ピッカーを開いて、 [ネイティブ データ タイプ] 列を選択する必要があります。

警告メモPostgreSQL ターゲットの BYTEA にマップされる列を持つソース テーブルから 移動 を実行する場合は、[タスクの設定](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#LOB)(既定)で[LOB 列をレプリケート] オプションが有効になっていることを確認します。

データ型

| Qlik Cloud データ型 | PostgreSQL データ型 |
| --- | --- |
| BOOL | BOOL |
| BYTES | BYTEA |
| 日付 | 日付 |
| TIME | TIME |
| DATETIME | スケールが 0 以上で 6 以下の場合は:<br><br>TIMESTAMP<br><br>スケールが 7 以上で 12 以下の場合は:<br><br>VARCHAR (37) |
| INT1 | SMALLINT |
| INT2 | SMALLINT |
| INT4 | INTEGER |
| INT8 | BIGINT |
| NUMERIC | DECIMAL (P, S) |
| REAL4 | FLOAT4 |
| REAL8 | FLOAT8 |
| STRING | 長さが 1 以上で 21845 以下の場合:<br><br>VARCHAR (バイト単位の長さ = STRING 値に 3 を掛けた値)<br><br>長さが 21846 以上で 2147483647 以下の場合:<br><br>VARCHAR (65535) |
| UINT1 | SMALLINT |
| UINT2 | INTEGER |
| UINT4 | BIGINT |
| UINT8 | BIGINT |
| WSTRING | 長さが 1 以上で 21845 以下の場合:<br><br>VARCHAR (バイト単位の長さ = WSTRING 値に 3 を掛けた値)<br><br>長さが 21846 以上で 2147483647 以下の場合:<br><br>VARCHAR (65535) |
| BLOB | BYTEA |
| NCLOB | TEXT |
| CLOB | TEXT |

### PostgreSQL ソースからレプリケートする場合のデータ型

PostgreSQL ソースからレプリケートする場合、ユーザー定義または PostGIS データ型の列を除き、ターゲット テーブルはすべての列が同じデータ型で作成されます。このような場合、ターゲットではデータ型は「character varying」として作成されます。