IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

COPY TO spécifique


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut COPY TO spécifique
    Bonjour,

    J'aimerais savoir s'il est possible (et comment) d'obtenir un export CSV d'une table en passant par la commande COPY TO sans que les champs NULL soient délimités par des "" ?

    Requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY (Ma requête) TO '/tmp/titi.csv' WITH DELIMITER ';' CSV;
    Je ne sais pas si un paramètre qui ressemblerait à un QUOTE 'NULL' existe.

    Merci d'avance !!!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Où ça un délimiteur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     copy (select 'abc',null,null,'efg') to stdout with delimiter ';' csv;
    Résultat:
    abc;;;efg

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Bonjour et tout d'abord merci pour la réponse !

    En réalité mon problème provient du fait que la commande COPY balise par défaut les données NULL par des " ".
    Certaines données sont NULL, d'autres non et cela sur une même colonne.
    Par conséquent, je ne peux pas forcer l'attribution de la valeur NULL sur une colonne donnée.

    Comment pourrais-je forcer la non attribution des " " dans le cadre de données NULL sur n'importe quelle colonne de ma table ? (j'aimerais qu'il n'y ait aucun balisage).

    Merci d'avance.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par zoharcryss Voir le message
    En réalité mon problème provient du fait que la commande COPY balise par défaut les données NULL par des " ".
    Si c'était le cas, la commande copy que j'ai mis en exemple sortirait des guillemets.
    Or il se trouve qu'elle n'en sort aucun.

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Effectivement la commande COPY ci-dessus remonte des champs NULL sans " " mais ce n'est toujours pas ce dont j'ai besoin.
    Je m'explique, en forcant les champs (SELECT 'abc',NULL,NULL,'efg') il n'y a aucun possibilité de sortir de ces colonnes les données qui y sont inscritent. Certaines données de ces colonnes sont effectivement NULL mais d'autres non donc je ne peux pas employer cette commande dans la mesure ou elle force les colonnes 2 et 3 à justement ne rien afficher.

    Il faudrait :

    Si les données sont NULL (qu'importe la colonne) qu'elles ne soient pas entourées de " ".

    Exemple :

    colonne 1; colonne 2; colonne 3

    A. Deuxième colonne NULL. Le format de sortie standard est le suivant :
    toto;"";titi

    Il faudrait :
    toto;;titi

    B. Troisième colonne NULL. Le format de sortie standard est le suivant :
    toto;tata;""

    Il faudrait :
    toto;tata;

    As-tu une idée ? Si il y a besoin de plus d'explication n'hésitez pas à me le faire savoir

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Je ne peux pas reproduire pas le problème dont tu parles avec PG 9.1
    Soit une table abc avec 3 colonnes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create table abc(a text,b text, c text);
    On met du contenu dans 2 colonnes et un NULL au milieu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into abc values('toto',null,'titi');
    On sort le contenu avec COPY en mode CSV:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    copy  abc to stdout WITH delimiter ';' csv;
    Résultat:

    toto;;titi
    Il n'y a aucun guillemet.

    Si tu vois des guillemets de ton côté, montre ton jeu d'essai et ta requête pour reproduire le problème.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il y a peut-être confusion entre les nulls et les vides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    copy (SELECT 'abc','',null,'efg') TO stdout WITH delimiter ';' csv;
     
    abc;"";;efg

Discussions similaires

  1. CMake : Copie de dossier dans un répertoire spécifique
    Par kroutov dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 09/03/2014, 14h59
  2. Script spécifique copie de fichier
    Par toubabn11 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 25/03/2013, 13h56
  3. Copie des feuilles spécifiques dans un classeur existant
    Par breizhgen dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/01/2012, 15h26
  4. Récupération de fichiers puis copie sur un port USB spécifique
    Par pmithrandir dans le forum Général Java
    Réponses: 5
    Dernier message: 11/11/2009, 15h41
  5. Copie de fichiers avec un compte spécifique
    Par eraim dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 17/07/2009, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo