banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 15 April 2013 14:22

guil31
Participant actif
Date d'inscription: 22 Jan 2013
Messages: 79

[PostgresSQL] : COPY TO seulement si ma table est non vide

Je souhaite exporter des tables en csv avec la commande COPY .... TO ....
mais que pour les tables non vides (et si possible sans passer par une fonction)

Je n'ai pas trouvé cette option dans l'aide sur COPY TO

Je pensais donc utiliser bêtement l'expression CASE WHEN
En écrivant quelque chose du genre:

Code:

CASE WHEN 
    (select count(*) from ma_table) >0 
THEN
    copy ma_table TO 'D:\\mon_repertoire\\ma_table.csv ' CSV HEADER DELIMITER ';'
END;

Visiblement ca ne fonctionne pas comme ca et j'ai le sentiment que l'expression CASE WHEN n'est pas utilisable en dehors d'un SELECT.


Merci pour votre aide

Hors ligne

 

#2 Mon 15 April 2013 15:27

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: [PostgresSQL] : COPY TO seulement si ma table est non vide

Bonjour,

Ca doit etre difficile a faire en pur SQL...

Il faut passer par un bout de script pour tester si les tables sont vides.
Vous devez pouvoir faire ca avec pgScript directement dans pgAdmin (http://pgscript.projects.pgfoundry.org/SCRIPT.html).
Ca se fait aussi assef facilement en shell ou dos en testant le count(*) des tables avant de lancer le COPY TO.

Nicolas

Hors ligne

 

#3 Tue 16 April 2013 08:57

guil31
Participant actif
Date d'inscription: 22 Jan 2013
Messages: 79

Re: [PostgresSQL] : COPY TO seulement si ma table est non vide

Ok c'est bien ce qu'il me semblait: pas si simple que ca en pur sql.
Bon soit je vais livrer des tables vides, soit je vais passer par une fonction en PL/pgsql.

Hors ligne

 

Pied de page des forums

Powered by FluxBB