Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Comment exporter des données PostgreSQL au format Parquet, CSV ou JSON ?

Comment exporter des données PostgreSQL vers Parquet, CSV ou JSON

C’est simple avec clickhouse-local :

  • Utilisez la fonction de table postgresql pour lire les données
  • Utilisez la clause INTO OUTFILE _filename_ FORMAT et indiquez le format de sortie souhaité

Le format de sortie peut être n’importe lequel des formats de sortie pris en charge par ClickHouse. Voyons quelques exemples…

Ces exemples utilisent clickhouse-local, qui fait partie du binaire ClickHouse. Téléchargez-le avec la commande suivante :

curl https://clickhouse.com/ | sh

Exporter PostgreSQL vers Parquet

La fonction de table postgresql permet d'exécuter des requêtes SELECT (et INSERT) sur des données stockées sur un serveur PostgreSQL distant. Par exemple, pour afficher l'intégralité du contenu d'une table dans PostgreSQL :

SELECT *
FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
);

Nous pouvons rediriger la sortie de cette requête vers un fichier à l’aide de INTO OUTFILE. Utilisez FORMAT pour préciser le format du fichier à créer. Récupérons l’intégralité du contenu de la table PostgreSQL et écrivons-le dans un fichier Parquet :

./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.parquet'"

Exporter PostgreSQL au format CSV

C’est la même chose que pour Parquet, sauf que nous indiquons un nom de fichier plus approprié pour le fichier de sortie :

./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.csv'"

Et voilà ! ClickHouse repère l’extension .csv dans le nom du fichier de sortie et exporte les données sous forme de valeurs séparées par des virgules. Sinon, c’est exactement la même commande que ci-dessus.

Exporter PostgreSQL en JSON

Pour exporter PostgreSQL en JSON, il suffit de modifier le nom du fichier et ClickHouse détectera le format :

./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.ndjson'"

Envoyer PostgreSQL vers un autre processus en flux

Au lieu d’utiliser INTO OUTFILE, vous pouvez envoyer les résultats d’une fonction de table vers un autre processus en flux. Voici un exemple simple pour illustrer la syntaxe : nous comptons le nombre de lignes à l’aide de la commande Linux wc -l :

./clickhouse local -q "SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/house_parquet/house_0.parquet'
FORMAT JSONEachRow
)" | wc -l

Cependant, nous pourrions facilement envoyer les lignes vers un script shell, un script Python ou tout autre processus de votre choix.

Navigation