跳到主要內容 跳至補充內容

PostgreSQL

此區段說明如何使用 PostgreSQL 目標連接器對 PostgreSQL 目標設定連線能力。PostgreSQL 僅可作為複寫任務中的目標使用。您需要先在資料庫上設定 必要權限,才能連線至 PostgreSQL 目標。若您正透過 資料移動閘道 連線至 PostgreSQL,您也需要按照 驅動程式的設定 中的說明安裝驅動程式。

如需關於使用 PostgreSQL 連接器時的限制和考慮事項的資訊,請參閱 限制和考慮事項

設定連線屬性

本節說明可用的連線屬性。除非另有指明,否則所有屬性皆為必要。

資料目標

  • 資料閘道選取將會用來測試 PostgreSQL 目標連線的 資料移動閘道。其閘道應與用來存取資料來源的閘道相同。

    資訊備註
    • 需要 資料移動閘道 2023.5.10 或更高版本。
    • 您也需要在 資料移動閘道 機器上安裝適當的驅動程式。如需詳細資訊,請參閱以下的 驅動程式的設定

  • 雲端供應商:按適當情況選擇下列項目之一:

      • PostgreSQL 內部部署
      • Amazon Aurora
      • 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。
    • 適用於 Amazon RDS for PostgreSQL。

      • Google Cloud SQL for PostgreSQL
      • Google Cloud AlloyDB for PostgreSQL
    • 適用於 Microsoft Azure Database for PostgreSQL。

  • 主機:PostgreSQL 資料庫安裝所在電腦的主機名稱或 IP 位址。

  • 連接埠:連線至資料庫時使用的連接埠。預設值為 5432。

帳戶屬性

使用者名稱密碼: 獲得授權可存取 PostgreSQL 伺服器資料庫的使用者的使用者名稱和密碼。

資料庫屬性

  • 資料庫名稱:有兩種方法可用來指定資料庫:

    • 方法 1 - 從清單中選取:按一下載入資料庫,然後選取資料庫。
    • 方法 2 - 手動:選取手動輸入資料庫名稱,然後輸入資料庫名稱。
  • SSL 模式:選擇以下其中一項:
    • 停用 - 僅使用姓氏和密碼連線。
    • 允許 - 若伺服器要求,則建立加密連線。
    • 偏好 - 此為預設。如果伺服器支援加密連線,建立加密連線,如果無法建立加密連線,返回未加密連線。
    • 需要:如果伺服器支援加密連線,建立加密連線。如果無法建立加密連線,連線嘗試失敗。
    • Verify CA:類似 Required,但也驗證設定 CA 憑證的伺服器憑證授權單位 (CA) 憑證。如果未找到有效相符 CA 憑證,連線嘗試失敗。
    • Verify Full:類似 Verify CA,但也會透過檢查用戶端用於連限制伺服器的主機名稱執行主機名稱辨識驗證(比如資料移動閘道),辨識伺服器發送給用戶端的憑證。用戶端檢查用於連線的主機名稱是否符合伺服器憑證中的一般名稱值。如果不相符則連線失敗。
  • 信任憑證: 以 PEM 格式發出用戶端憑證檔案的憑證授權單位 (CA)。
  • 用戶端憑證:上傳伺服器要求的用戶端憑證。
  • 用戶端憑證金鑰:PEM 格式的用戶端私人金鑰檔案。
  • CRL:CRL 憑證。此檔案包含憑證授權單位撤銷的憑證。如果伺服器憑證出現在此清單,連線會失敗。
  • SSL 壓縮:選擇此選項在加密前壓縮檔案。
  • 最大檔案大小 (KB):請先選取或輸入 CSV 檔案的最大大小 (單位為 KB),再載入到 PostgreSQL 目標資料庫中。預設值為 32000 KB。

內部屬性

內部屬性用於特殊使用情況,因此不會在對話方塊中顯示。您只能在 Qlik 支援指示下使用。

根據需要使用欄位右側的 新建取消 按鈕以新增或移除屬性。

名稱

連線的顯示名稱。

必要條件

必要權限

連接器設定中指定的使用者必須是 PostgreSQL 資料庫中已註冊的使用者。

此外,必須授予下列權限:

  • 可以登入
  • 建立資料庫
資訊備註若目標結構描述已存在於資料庫中,則不需要「建立資料庫」權限。

驅動程式的設定

您可以使用驅動程式安裝公用程式 (建議) 或手動安裝 driver。只能在不太可能發生的事件 (您在使用驅動程式安裝公用程式時遇到問題) 中嘗試手動安裝。

使用驅動程式安裝公用程式來安裝驅動程式

此區段描述如何安裝所需的 driver。該流程涉及執行將會自動下載、安裝並設定所需 driver 的指令碼。您也可以執行指令碼,以根據需求更新並解除安裝 driver

  • 確認 Python 3.6 或更高版本安裝於 資料移動 閘道伺服器。

    Python 會預先安裝在大部分的 Linux 發行版。您可以執行下列命令,以查看哪個 Python 版本安裝在您的系統上:

    python3 --version

若要下載並安裝 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。

  5. 將會安裝 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。
  5. 將會解除安裝舊版 driver,並安裝新版 driver

若您想要解除安裝 driver,請執行解除安裝命令。

若要解除安裝 driver

  1. 停止設定為使用此連接器的所有任務。

  2. 資料移動 閘道機器上,將工作目錄變更為:

    opt/qlik/gateway/movement/drivers/bin

  3. 執行下列命令:

    語法:

    ./uninstall postgres

    將會解除安裝 driver

手動安裝驅動程式和物件庫

只有在自動驅動程式安裝無法成功完成時,才能嘗試手動安裝 driver

安裝 資料移動閘道 後,下載下列 RPM 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/postgres.yamlbinary-artifacts 之下找到檔案的直接下載連結。下載完成後,將檔案複製到 資料移動閘道 機器。

資料移動閘道 安裝於 Red Hat 9.x:

  • postgresql<version>-libs-<version>PGDG.rhel9.x86_64.rpm
  • postgresql<version>-<version>PGDG.rhel9.x86_64.rpm
  • postgresql<version>-odbc-<version>PGDG.rhel9.x86_64。

資料移動閘道 安裝於 Red Hat 8.x:

  • postgresql<version>-libs-<version>PGDG.rhel8.x86_64.rpm
  • postgresql<version>-<version>PGDG.rhel8.x86_64.rpm
  • postgresql<version>-odbc-<version>PGDG.rhel8.x86_64.rpm

 

資料移動閘道 伺服器上,開啟 shell prompt 並進行以下項目:

  1. 停止 資料移動閘道 服務:

    sudo systemctl stop repagent

  2. 可自選,確認服務已停止:

    sudo systemctl status repagent

    狀態應如下所示:

    Active: inactive (dead) since <timestamp> ago

  3. 安裝 RPM 檔案。

  4. 變更任務目錄至 <資料移動閘道-Install-Dir>/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. 開始 資料移動閘道 服務:

    sudo systemctl start repagent

  9. 可自行選擇確認服務已開始:

    sudo systemctl status repagent

    狀態應如下所示:

    Active: active (running) since <timestamp> ago

限制和考慮事項

使用 PostgreSQL 作為複寫目標時,下列限制適用:

  • 不支援沒有主要金鑰/唯一索引且包含複寫記錄的表格上的更新和刪除操作。對這些表格的任何變更將會影響目標中的所有記錄。
  • 批次最佳化套用模式不支援具有金鑰 LOB 欄的表格。若 VARBINARY 欄作為來源表格金鑰使用,將會在目標中建立 BYTEA 欄。這會在批次最佳化套用模式中造成無法預測的行為。作為因應措施,我們建議使用 SQLite HEX 函數,以將 VARBINARY 轉換至 VARCHAR。

資料類型

會保留原生資料類型資訊,並顯示在資料集檢視的原生資料類型欄中。若看不見欄,您需要開啟資料集檢視的欄選擇器並選取原生資料類型欄。

資料類型
Qlik Cloud 資料類型 PostgreSQL 資料類型

BOOL

BOOL

位元組

BYTEA

日期

日期

時間

時間

日期時間

若刻度為 => 0 且 =< 6,則:

時間戳記

若刻度為 => 7 且 =< 12,則:

VARCHAR (37)

INT1

SMALLINT

INT2

SMALLINT

INT4

整數

INT8

BIGINT

數字

小數點 (P,S)

REAL4

FLOAT4

REAL8

FLOAT8

字串

若長度為 1 - 21845,則:

VARCHAR (單位為位元組的長度 = STRING 值乘以三)

若長度為 21846 - 2147483647,則:

VARCHAR (65535)

UINT1

SMALLINT

UINT2

整數

UINT4

BIGINT

UINT8

BIGINT

WSTRING

若長度為 1 - 21845,則:

VARCHAR (單位為位元組的長度 = WSTRING 值乘以三)

若長度為 21846 - 2147483647,則:

VARCHAR (65535)

BLOB

BYTEA

NCLOB

文字

CLOB

文字

PostgreSQL 來源複寫時的資料類型

PostgreSQL 來源複寫時,將會為所有欄以相同的資料類型建立目標表格,但具有使用者定義或 PostGIS 資料類型的欄除外。在這類情況下,將會建立資料類型作為目標中的「字元變化」。

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!