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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    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 Expert
    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
    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 averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    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 Expert
    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
    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 averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    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 Expert
    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
    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.

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