Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ignorer les échappements dans un DATA LOAD

Sujet résolu
    19 septembre 2018 à 9:51:22

    Bonjour à tous,

    Je sais, j'ai déjà vu un petit paquet de topics là dessus mais je n'ai pas trouvé de solutions...

    Je remplis une base de données à l'aide de fichiers csv. Pour cela, j'écris des fichiers sql dans lesquels je crée des tables puis fait un LOAD DATA. Bref, peu d'importance...

    Une seule colonne me pose problème. Il s'agit d'une colonne qui contient des chemins (ex: "\\Dossier1\Repertoire\doc.pdf").

    Ces antislashs sont considérés comme des caractères d'échappement par MySQL transformant alors mon exemple en "\Dossier1epertoireoc.pdf".

    J'ai trouvé des choses sur ESCAPE BY mais je n'ai aucune valeur de remplacement à y mettre. En effet, on trouve de tout dans ces chemins...

    Mon souhait est simple. J'aimerai "désactiver" les échappements. Quelqu'un a une idée?

    Merci d'avance ! :)

    -
    Edité par Malecto 24 septembre 2018 à 11:56:22

    • Partager sur Facebook
    • Partager sur Twitter
    Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur.
      19 septembre 2018 à 11:14:40

      Bonjour,

      Une solution directe serait échapper les \ dans ton script en les doublant (rechercher / remplacer dans ton éditeur de texte).

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        21 septembre 2018 à 14:55:04

        Bonjour,

        Désolé de ne pas avoir fait suivre mon post.

        J'ai trouvé la solution qui est finalement toute bête.

        Pour "désactiver" les échappements, il suffit de rajouter un paramètre dans le LOAD DATA comme suit : ESCAPED BY ''

        LOAD DATA LOCAL INFILE 'mon_fichier.csv'
        INTO TABLE t_ma_table
        FIELDS TERMINATED BY ';' ESCAPED BY ''
        ENCLOSED BY '"'
        LINES TERMINATED BY '\n'
        IGNORE 1 LINES;

        Je clôture le post.

        • Partager sur Facebook
        • Partager sur Twitter
        Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur.
          21 septembre 2018 à 16:01:43

          Attention ... En faisant cela tu perds les vrais échappements éventuels présents dans ton script ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            24 septembre 2018 à 11:52:44

            Je sais bien, mais le script est simple :

            - Je crée une table avec autant de champs que de colonne dans mon CSV

            - J'importe les données brutes

            Ma seule problématique était de conserver l'exactitude des données. Le reste sera traité en PHP.

            • Partager sur Facebook
            • Partager sur Twitter
            Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur.
              24 septembre 2018 à 16:04:22

              Malecto a écrit:

              - J'importe les données brutes

              Et ces données ne contiendront jamais d'échappement "vrais" ?

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                25 septembre 2018 à 7:50:09

                Non aucun.
                • Partager sur Facebook
                • Partager sur Twitter
                Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur.

                Ignorer les échappements dans un DATA LOAD

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown