SELECT et INSERT sur des données stockées sur un serveur PostgreSQL distant.
Syntaxe
Arguments
| Argument | Description |
|---|---|
host:port | Adresse du serveur PostgreSQL. |
database | Nom de la base de données distante. |
table | Nom de la table distante. |
user | Utilisateur PostgreSQL. |
password | Mot de passe de l’utilisateur. |
schema | Schéma de table autre que celui par défaut. Facultatif. |
on_conflict | Stratégie de résolution des conflits. Exemple : ON CONFLICT DO NOTHING. Facultatif. |
host et port doivent être indiqués séparément. Cette approche est recommandée en production.
Valeur renvoyée
Dans la requête
INSERT, pour distinguer la fonction de table postgresql(...) d’un nom de table accompagné d’une liste de noms de colonnes, vous devez utiliser les mots-clés FUNCTION ou TABLE FUNCTION. Voir les exemples ci-dessous.Détails d’implémentation
SELECT côté PostgreSQL s’exécutent sous la forme de COPY (SELECT ...) TO STDOUT à l’intérieur d’une transaction PostgreSQL en lecture seule, avec un commit après chaque requête SELECT.
Les clauses WHERE simples, telles que =, !=, >, >=, <, <= et IN, sont exécutées sur le serveur PostgreSQL.
Toutes les jointures, agrégations, opérations de tri, conditions IN [ array ] et la contrainte d’échantillonnage LIMIT sont exécutées dans ClickHouse, et uniquement une fois la requête vers PostgreSQL terminée.
Les requêtes INSERT côté PostgreSQL s’exécutent sous la forme de COPY "table_name" (field1, field2, ... fieldN) FROM STDIN à l’intérieur d’une transaction PostgreSQL avec commit automatique après chaque instruction INSERT.
Les types Array de PostgreSQL sont convertis en tableaux ClickHouse.
Attention : dans PostgreSQL, une colonne de type tableau comme Integer[] peut contenir des tableaux de dimensions différentes selon les lignes, mais dans ClickHouse, seuls des tableaux multidimensionnels de même dimension sont autorisés dans toutes les lignes.
|. Par exemple :
0.
Exemples
Répliquer ou migrer des données Postgres avec PeerDB
En plus des fonctions de table, vous pouvez également utiliser PeerDB de ClickHouse pour mettre en place un pipeline de données continu de Postgres vers ClickHouse. PeerDB est un outil spécialement conçu pour répliquer des données de Postgres vers ClickHouse à l’aide de la capture de données modifiées (CDC).