# PostgreSQL

I det här delavsnittet beskrivs hur du konfigurerar anslutningen till ett PostgreSQL-mål med PostgreSQL-målkopplingen. PostgreSQL kan endast användas som mål i en replikeringsuppgift. Innan du kan ansluta till ett PostgreSQL-mål måste du konfigurera [Behörigheter som krävs](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Permissi) på databasen. Om du ansluter till PostgreSQL via Gateway för dataflytt måste du även installera drivrutinen enligt beskrivning i [Inställning av drivrutin](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Driver).

Information om begränsningar och överväganden för användning av PostgreSQL-kopplingen finns i [Begränsningar och överväganden](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Limitati).

## Ställa in anslutningsegenskaper

Gör så här för att konfigurera kopplingen:

1. I Kopplingar klickar du på Skapa koppling.

2. Välj PostgreSQL-målkopplingen och ange följande inställningar:

### Datamål

* Datagateway: När du arbetar med Gateway för dataflytt ska du välja den datagateway som kommer att användas för att testa kopplingen till PostgreSQL-målet. Detta ska vara samma gateway som användes för att komma åt datakällan.

  Anteckning om information

  * Detta fält är inte tillgängligt med Qlik Talend Cloud Starterprenumeration eftersom Gateway för dataflytt inte stöds med denna prenumerationsnivå.

  * Du måste också installera lämplig drivrutin på Gateway för dataflytt-maskinen. Information finns i [Inställning av drivrutin](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm#Driver) nedan.

* Molnleverantör: välj något av följande efter behov:

  * Ingen – välj när du arbetar med:

    * PostgreSQL på plats
    * Amazon Aurora
    * Azure Database för PostgreSQL – Flexible Server
    * Nej Gateway för dataflytt

  * Amazon RDS

    För Amazon RDS för PostgreSQL.

  * Google Clooud – välj när du arbetar med:

    * Google Cloud SQL för PostgreSQL
    * Google Cloud AlloyDB för PostgreSQL

  * Microsoft Azure

    För Microsoft Azure Database för PostgreSQL.

* Värd: värdnamnet eller IP-adressen för den dator där PostgreSQL-databasen är installerad.

* Port: Port som ska användas vid anslutning till databasen. Standardvärdet är 5432.

### Kontoegenskaper

Användarnamn och Lösenord: Användarnamn och lösenord för en användare som har behörighet att komma åt PostgreSQL Server-databasen .

### Databasegenskaper

* Databasnamn: du kan använda två metoder för att specificera en databas:

  * Metod 1 - Välj från en lista: Klicka på Ladda databas och välj sedan en databas.
  * Metod 2 - Manuellt: Välj Ange databasnamn manuellt och ange databasens namn.

* SSL-läge: Välj ett av följande:

  * inaktivera – Anslut enbart med efternamn och lösenord.
  * tillåt – Upprätta en krypterad anslutning om servern begär det.
  * föredra – Detta är standardinställningen. Upprättar en krypterad koppling om servern har stöd för krypterade koppling och övergår till okrypterad koppling om det inte går att upprätta en krypterad koppling.
  * kräv – Upprättar en krypterad koppling om servern har stöd för krypterade kopplingar. Anslutningsförsöket misslyckas om det inte går att upprätta en krypterad anslutning.
  * verifiera-ca – samma som Krävs, men verifierar också serverns Certificate Authority-certifikat (CA) mot de konfigurerade CA-certifikaten. Anslutningsförsöket misslyckas om det inte går att hitta ett matchande CA-certifikat.
  * fullständig-verifiering – Samma som Verifiera-CA, men utför också en verifiering av värdnamnets identitet genom att kontrollera klientens värdnamn (dvs. Qlik Talend Data Integration) använder för att ansluta till servern mot identiteten i certifikatet som servern skickar till klienten. Klienten kontrollerar om det värdnamn som används för att ansluta matchar Common Name-värdet i servercertifikatet. Anslutningen misslyckas om värdena inte matchar.

* Betrott certifikat: Den certifikatutfärdare (CA) som utfärdade klientcertifikatet i PEM-format.

* Klientcertifikat: Ladda upp det klientcertifikat som begärts av servern.

* Client certificate key: klientens privata nyckelfil i PEM-format.

* CRL: CRL-certifikatet. Den här filen innehåller certifikat som återkallats av certifikatutfärdarna. Om servercertifikatet finns i den här listan kommer anslutningen att misslyckas.

* SSL-komprimering: Välj det här alternativet för att komprimera data innan det krypteras.

* Maximal filstorlek (kB): Välj eller skriv den maximala storleken (i kB) för en CSV-fil innan den laddas in i PostgreSQL-måldatabasen. Standardvärdet är 32 000 kB.

### Interna egenskaper

Interna egenskaper är till för speciella användarfall och visas därför inte i dialogen. De ska bara användas om Qlik-supporten uppmanar dig att göra det.

Använd the Skapa ny icon- och the Avbryt icon-knapparna till höger om fälten för att lägga till och ta bort egenskaper efter behov.

### Namn

Visningsnamnet för anslutningen.

## Förutsättningar

### Behörigheter som krävs

Den användare som anges i kontaktinställningarna måste vara en registrerad användare i PostgreSQL-databasen.

Dessutom måste följande behörigheter ges:

* Kan logga in

* Skapa databaser

  Anteckning om informationOm målschemat redan finns i databasen krävs inte behörigheten "Skapa databaser".

### Inställning av drivrutin

Du kan installera driver med verktyget för installation av drivrutiner (rekommenderas) eller manuellt. Manuell installation ska bara användas om det mot förmodan skulle inträffa ett problem med verktyget för installation av drivrutiner.

#### Använda verktyget för installation av drivrutiner för att installera drivrutinen

I det här delavsnittet beskrivs hur driver som krävs installeras. Processen innebär att ett skript körs som automatiskt hämtar, installerar och konfigurerar den nödvändiga driver. Du kan också köra skript som uppdaterar och avinstallerar driver efter behov.

Förbereda installationen

* Kontrollera att Python 3.6 eller senare är installerad på Data Movement-gatewayservern.

  Python kommer förinstallerad på de flesta Linuxdistributioner. Du kan kontrollera vilken Pythonversion som är installerad på ditt system genom att köra följande kommando:

  python3 --version

Installera driver

Så här hämtar och installerar du driver:

1. På Data Movement-gatewaydatorn byter du arbetskatalog till:

   opt/qlik/gateway/movement/drivers/bin

2. Kör följande kommando:

   Syntax:

   ./install postgres

   Om driver inte kan hämtas (på grund av åtkomstbegränsningar eller tekniska problem) visas ett meddelande som beskriver var du kan hämta driver och vart du ska kopiera den på Data Movement-gatewaydatorn. När du har gjort detta kör du install postgres-kommandot igen.

   I annat fall visas EULA för driver.

3. Gör ett av följande:

   * Tryck på [Enter] flera gånger för att långsamt rulla genom EULA.
   * Tryck på mellanslagstangenten flera gånger för att snabbt rulla genom EULA.
   * Tryck på q för att lämna avtalstexten. Godkännandealternativen för EULA visas.

4. Gör ett av följande:

   * Skriv in "y" och tryck på [Enter] för att godkänna EULA och börja med installationen.

   * Skriv in "n" och tryck på [Enter] för att avböja EULA och avsluta installationen.

   * Skriv in "v" och tryck på [Enter] för att visa EULA igen.

   driver kommer att installeras.

Uppdatering av driver

Kör uppdateringskommandot om du vill avinstallera tidigare versioner av driver innan du installerar den tillhandahållna driver.

Så här hämtar och uppdaterar du driver:

1. På Data Movement-gatewaydatorn byter du arbetskatalog till:

   opt/qlik/gateway/movement/drivers/bin

2. Kör följande kommando:

   Syntax:

   ./update postgres

   Om driver inte kan hämtas (på grund av åtkomstbegränsningar eller tekniska problem) visas ett meddelande som beskriver var du kan hämta driver och vart du ska kopiera den på Data Movement-gatewaydatorn. När du har gjort detta kör du update postgres-kommandot igen.

   I annat fall visas EULA för driver.

3. Gör ett av följande:

   * Tryck på [Enter] flera gånger för att långsamt rulla genom EULA.
   * Tryck på mellanslagstangenten flera gånger för att snabbt rulla genom EULA.
   * Tryck på q för att lämna avtalstexten. Godkännandealternativen för EULA visas.

4. Gör ett av följande:

   * Skriv in "y" och tryck på [Enter] för att godkänna EULA och börja med installationen.
   * Skriv in "n" och tryck på [Enter] för att avböja EULA och avsluta installationen.
   * Skriv in "v" och tryck på [Enter] för att granska EULA från början.

   Den gamla driver avinstalleras och den nya driver installeras.

Avinstallera driver

Kör avinstalleringskommandot om du vill avinstallera driver.

Så här avinstallerar du driver:

1. Stoppa alla uppgifter som är konfigurerade för att använda denna koppling.

2. På Data Movement-gatewaydatorn byter du arbetskatalog till:

   opt/qlik/gateway/movement/drivers/bin

3. Kör följande kommando:

   -syntax

   ./uninstall postgres

   driver kommer att avinstalleras.

#### Installera drivrutinen och biblioteken manuellt

Du bör bara försöka installera driver manuellt om den automatiserade drivrutinsinstallationen inte slutfördes.

Efter att Gateway för dataflytt har installerats hämtar du följande RPM-filerr. Du hittar direkta nedladdningslänkar till filerna i binary-artifacts i /opt/qlik/gateway/movement/drivers/manifests/postgresql.yaml. När hämtningen har slutförts kopierar du filerna till Gateway för dataflytt-maskinen.

När Gateway för dataflytt installeras på Red Hat 9.x:

* 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.

När Gateway för dataflytt installeras på Red Hat 8.x:

* 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

Öppna en kommandorad på Gateway för dataflytt-servern och gör följande:

1. Stoppa tjänsten Gateway för dataflytt:

   sudo systemctl stop repagent

2. Om du vill kan du bekräfta att tjänsten har stoppats:

   sudo systemctl status repagent

   Statusen ska vara enligt följande:

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

3. Installera RPM-filerna.

4. Ändra arbetskatalogen till &lt;Gateway för dataflytt-Install-Dir&gt;/bin.

5. Kopiera drivrutinens plats till filen `site_arep_login.sh` enligt följande:

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

   Detta kommer att lägga till drivrutinen i "LD\_LIBRARY\_PATH" och uppdatera drivrutinsplatsen i filen site\_arep\_login.sh.

6. Om du vill kan du bekräfta att drivrutinsplatsen kopierades:

   ```
   cat site_arep_login.sh
                           
   ```

7. Säkerställer att `/etc/odbcinst.ini`-filen innehåller en post för PostgreSQL, som i följande exempel:

   `[PostgreSQL]`

   `Description = PostgreSQL ODBC driver`

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

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

   `UsageCount = 1`

8. Starta Gateway för dataflytt-tjänsten.

   sudo systemctl start repagent

9. Om du vill kan du bekräfta att tjänsten har startats:

   sudo systemctl status repagent

   Statusen ska vara enligt följande:

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

## Begränsningar och överväganden

Följande begränsningar gäller när PostgreSQL används som replikeringsmål:

* UPDATE- och DELETE-åtgärder på tabeller utan primärnyckel/unikt index som innehåller kopierade poster stöds inte. Alla ändringar i dessa tabeller kommer att påverka alla poster i målet.
* Tabeller med en LOB-kolumn i nyckeln stöds inte i Batchoptimerad tillämpning-läget. När en VARBINARY-kolumn används som källtabellnyckel skapas en BYTEA-kolumn i målet. Detta orsakar oförutsägbart beteende i Batchoptimerad tillämpning-läget. Som en lösning föreslår vi att du använder SQLite HEX-funktionen för att konvertera VARBINARY till VARCHAR.

## Datatyper

Information om inbyggd datatyp bevaras och visas i kolumnen Inbyggd datatyp i datauppsättningsvyer. Om kolumnen inte är synlig måste du öppna kolumnväljaren i datauppsättnignsvyn och välja kolumnen Inbyggd datatyp.

Anteckning om varningVid flyttar från en källtabell med kolumner som mappar till BYTEA på målet PostgreSQL, se till att alternativet Replicate LOB-kolumner är aktiverat [i uppgiftsinställningarna](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#LOB) (standard).

Datatyper

| Qlik Cloud Datatyper | PostgreSQL-datatyper |
| --- | --- |
| BOOL | BOOL |
| BYTES | BYTEA |
| DATE | DATE |
| TIME | TIME |
| DATETIME | Om skala är =&gt; 0 och =&lt; 6, då:<br><br>TIMESTAMP<br><br>Om skala är =&gt; 7 och =&lt; 12, då:<br><br>VARCHAR (37) |
| INT1 | SMALLINT |
| INT2 | SMALLINT |
| INT4 | INTEGER |
| INT8 | BIGINT |
| NUMERIC | DECIMAL (P, S) |
| REAL4 | FLOAT4 |
| REAL8 | FLOAT8 |
| STRING | Om längden är 1 - 21845, då:<br><br>VARCHAR (längd i bytes = STRING-värdet multiplicerat med tre)<br><br>Om längden är 21846 - 2147483647, då:<br><br>VARCHAR (65535) |
| UINT1 | SMALLINT |
| UINT2 | INTEGER |
| UINT4 | BIGINT |
| UINT8 | BIGINT |
| WSTRING | Om längden är 1 - 21845, då:<br><br>VARCHAR (längd i bytes = WSTRING-värdet multiplicerat med tre)<br><br>Om längden är 21846 - 2147483647, då:<br><br>VARCHAR (65535) |
| BLOB | BYTEA |
| NCLOB | TEXT |
| CLOB | TEXT |

### Datatyper vid replikering från en PostgreSQL-källa

Vid replikering från en PostgreSQL-källa kommer måltabellen att skapas med samma datatyper för alla kolumner, förutom kolumner med användardefinierade eller PostGIS-datatyper. I sådana fall kommer datatypen att skapas som "teckenvariation" i målet.