Discussion: COPY TO spécifique

  1. #1
    Invité régulier
    Inscrit en
    juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 24
    Points : 6
    Points
    6

    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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 846
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 846
    Points : 2 806
    Points
    2 806

    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
    Invité régulier
    Inscrit en
    juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 24
    Points : 6
    Points
    6

    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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 846
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 846
    Points : 2 806
    Points
    2 806

    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
    Invité régulier
    Inscrit en
    juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 24
    Points : 6
    Points
    6

    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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 846
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 846
    Points : 2 806
    Points
    2 806

    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

    Homme Profil pro
    Ingénieur d'études en décisionnel
    Inscrit en
    septembre 2008
    Messages
    7 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études en décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : septembre 2008
    Messages : 7 161
    Points : 15 009
    Points
    15 009

    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 Outils pour C & C++
    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 Débuter
    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