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

SQL Oracle Discussion :

Les quotes dans ma requête "select"


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Les quotes dans ma requête "select"
    Bonjour à tous,

    J'ai un petit souci concernant l'écriture d'un fichier .SQL qui fait une requête select et qui spool dans un .CSV
    Il se trouve que j'ai une requête "numéro de téléphone" qui, une fois retrouvée dans excel, est considérée comme un entier, et qui apparait donc sans les 0 initiaux, et même en format scientifique quand le numéro est long. C'est pas franchement l'idéal pour des numéro de téléphone
    Alors, je me suis dit "je vais entourer la donnée de quote afin qu'elle soit interprétée comme une chaîne". Oui, mais problème, SQL semble bien capricieux.

    J'ai tenté :
    Résultat : ORA-00904: "'" : identificateur non valide

    Ou encore :
    Et :
    Résultat : ORA-00911: Caractère non valide
    En gros, l'antislash ne protège rien.

    Mais rien n'y fait.

    C'est fou de perdre du temps à cause d'un problème comme celui çi...
    D'autant qu'à part ce détail, ça fonctionne parfaitement...

    Je vous rermercie d'avance pour vos réponses

    (Je précise que cette requête n'est pas utilisée par un fichier php, elle est lancée par un .BAT)

  2. #2
    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 suffit de doubler votre simple quote :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '''' || L.telli || ''''
    Ici il y en a quatre. Une pour ouvrir la chaîne de caractères, deux pour coder la quote, et une dernier pour fermer la chaîne de caractères.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Il suffit de doubler votre simple quote :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '''' || L.telli || ''''
    Ici il y en a quatre. Une pour ouvrir la chaîne de caractères, deux pour coder la quote, et une dernier pour fermer la chaîne de caractères.
    Merci, il y a de l'amélioration, mais ce n'est pas encore tout à fait ça. Les quotes apparaissent aussi dans le .csv, ce que je ne souhaite pas. En effet, après, les quotes se retrouvent aussi sur la fiche client (renseignée à partir du .csv) de l'application avec laquelle je travaille.

  4. #4
    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
    Votre problème est sous Excel alors, pas en SQL.
    Indiquez dans Excel que vous travaillez sur une colonne texte.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Oui, mais le souci est que le fichier en en séparateur virgule, avec toutes les données sur une seule colonne, avec de longues chaînes par ligne. Le fait donc de changer le type de la colonne n'affecte en rien la donnée 'numéro de téléphone' en particulier.
    C'est idiot de formater le fichier de cette sorte, mais l'application que j'utilise n'accepte pas la séparation point virgule.
    Il possible de transformer le fichier sous excel en utilisant données -> convertir afin de mettre sous formes de colonnes, puis de changer le format des cellules de la colonne numéro de téléphone, mais même comme ça j'ai des soucis. Ca résoud le problème des 0 initiaux, mais pas celui des numéro en format scientifique, que Excel a l'air d'interpréter en chaîne et non pas en nombre... C'est traumatisant ce souci...

  6. #6
    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
    Si vous générer un fichier .csv contrôlez-le avec un éditeur de texte simple type notepad.

    Si ce fichier est correct, votre problème est bien sous Excel et toutes les fonctions SQL du monde n'y pourront rien.

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Effectivement, ce souci vient d'excel. Quand je spool dans un .txt, les données apparaissent sous un format correct. Ce que je peux faire, c'est changer l'extension de ce fichier en .csv, et supprimer deux lignes superflues manuellement (et oui, mon .BAT exécute aussi une macro qui supprime la première et la troisième ligne du fichier .CSV qui sont systématiquement vides)
    Mais ça reste quand même franchement bidouilleux comme méthode
    Je préfèrerais pondre un CSV correct directement. Il doit bien y avoir une solution

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    A part écrire une macro lancée par le .bat après génération du fichier, je ne vois pas de solution automatique.

  9. #9
    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
    Qu'est-ce que vous faites exactement avec Excel ?
    Votre application digère quel type de fichier exactement ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Voici la trame : j'ai un .BAT qui commence par exécuter un .SQL qui spool dans un .CSV (je récupère les données des comptes client). Ensuite je veux envoyer ces données dans le logiciel de gestion de la relation client via un assistant d'importation tout fait qui demande un point CSV avec séparateur virgule (et non pas point virgule !)
    Après l'éxécution du .SQL, le .BAT lance une macro qui supprime les lignes vides.
    Tout fonctionne, à part ces maudits numéros de téléphone ! Ce qui fait qu'a la fin dans le logiciel de gestion client, on se retrouve avec des comptes qui ont comme numéro une puissance de 10... Ou qui n'ont pas de 0 initiaux. Bref, qui sont considérés comme des entiers...

  11. #11
    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
    Est-ce "l'assistant d'importation tout fait" qui s'exécute sous Excel ?
    Fichier CSV, à la base c'est un séparateur virgule (Comma Separated Value) donc ce n'est pas une aberration.

  12. #12
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Non il s'exécute dans le logiciel de gestion client, qui m'affiche une fenêtre avec un bouton "parcourir" où je dois sélectionner le csv que je veux pour importer les comptes clients. Mais là n'est pas le problème, c'est Excel qui formate mes données à mon insu et d'un façon que je ne désire pas...

  13. #13
    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
    Ce que je ne comprends pas c'est où intervient Excel, vous ne le mentionnez nulle part dans votre process.

  14. #14
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Heu... C'est pas faux ^^
    En fait, c'est quand j'ouvre le .csv résultant de l'éxécution du .bat, ça s'ouvre avec Excel et c'est là que je vois que les données sont fausses. Si je fais mon spool dans un .txt et que j'ouvre le .txt, les données sont au bon format. Si on entre un entier dans une cellule Excel, comme 00998877, Excel affiche 998877, de même que si je rentre un entier trop long à son goût, j'aurais une horreur comme 1,23E+20 (exemple)
    Je ne sais comment l'expliquer.
    voici un extrait d'une ligne de mon csv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    , Nom_responsable_compte,4.20355E+11,4.20355E+11, Nom_compte,
    Le premier chiffre, c'est un numéro de tel, le deuxième, de fax.
    Maintenant la même chose mais dans mon .txt (en estimant que je change mon fichier sql pour spool cette fois-ci dans un .txt et non dans un .csv) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    , Nom_responsable_compte, 054567842545    , 21564541214              , Nom_compte
    (j'ai changé les valeurs dans ma deuxième balise code, afin de conserver la confidentialité du numéro )
    Je désespère...

  15. #15
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Citation Envoyé par Jonathan_pingu Voir le message
    Heu... C'est pas faux ^^
    En fait, c'est quand j'ouvre le .csv résultant de l'éxécution du .bat, ça s'ouvre avec Excel et c'est là que je vois que les données sont fausses.
    lol! Vous ne connaissez pas les "subtilités" d'Excel.

    Quand vous ouvrez un fichier texte avec Excel, il interprète implicitement tout ce qui ressemble à un nombre comme un nombre, et donc vire les 0 devant. Ce n'est pas pour autant que vos données sont fausses.

    Vérifiez plutôt si en bout de chaîne, dans le logiciel de gestion client, vous avez ce que vous voulez.

    Pour voir vos données sans déformation dans Excel, renommez votre .csv en .txt, et dans Excel, ouvrez-le en choisissant le format des colonnes.
    Autre façon de faire: ouvrez un fichier excel vierge, sélectionnez tout, mettez tout en format texte (clic droit...), copiez/collez votre fichier texte (ouvert) dans la feuille.

  16. #16
    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
    Je vous conseille comme Goldoz de dérouler tout votre process sans jamais ouvrir le fichier et de vérifier les résultats dans votre application.

  17. #17
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Bonsoir,
    Puisqu'on en est à se lancer les subtilités d'Excel ...
    Savez-vous qu'une donnée alphanumérique composée de chiffres (exemple 00009875) n'est pas convertie automatiquement en numérique 9875 si vous la faites précéder d'une simple quote en première position '00009875 (et non pas en l'encadrant).
    A essayer dans le sql pour le csv...
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  18. #18
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    D'accord je vais essayer.
    Malheuresement c'est faux en bout de chaîne, dans la fiche du compte client, certains numéro sont de la forme 1.00E+10
    En gros, exactement de la même forme que dans le csv quand je l'ouvre. Bien, je vais suivre tes conseils GoLDoZ ! Et c'est vrai, je ne suis pas très habitué à travailler avec Excel, mais le premier contact est assez froid pour le moment

    Citation Envoyé par Bruno2r Voir le message
    Bonsoir,
    Puisqu'on en est à se lancer les subtilités d'Excel ...
    Savez-vous qu'une donnée alphanumérique composée de chiffres (exemple 00009875) n'est pas convertie automatiquement en numérique 9875 si vous la faites précéder d'une simple quote en première position '00009875 (et non pas en l'encadrant).
    A essayer dans le sql pour le csv...
    J'ai déjà essayé cette astuce, qui en effet ne transforme pas le chiffre, mais la quote se retrouve après dans le logiciel de gestion client. Ce qui n'est pas très "clean".

    Edit : Renommer le .csv tout frais jamais ouvert en .txt et l'ouvrir avec Excel ne change rien (en plus, il me met plusieurs colonnes, alors que je veux avoir toutes mes données dans une seule...)


  19. #19
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Citation Envoyé par Jonathan_pingu Voir le message
    Edit : Renommer le .csv tout frais jamais ouvert en .txt et l'ouvrir avec Excel ne change rien (en plus, il me met plusieurs colonnes, alors que je veux avoir toutes mes données dans une seule...)
    Dans Excel, "Fichier->Ouvrir", et vous choisissez l'extension txt. Normalement, vous avez une fenêtre "Assistant Importation de texte - Etape 1 sur 3" qui s'ouvre.

    A moins qu'il y ait une association particulière des fichiers texte avec Excel ou qqch dans le genre...

  20. #20
    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
    Supprimez Excel de votre process. Vous n'en avez pas besoin.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/02/2015, 09h20
  2. Réponses: 3
    Dernier message: 20/10/2010, 12h27
  3. [MySQL] Insérer des simples quotes dans ma requête
    Par Rick62 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/06/2009, 15h32
  4. Comment eviter les doubons dans une requête?
    Par jyms2006 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/03/2006, 14h08
  5. Optimiser les jointures dans des requêtes
    Par klereth dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 23/04/2005, 17h29

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