Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertir un fichier CSV en un fichier SQL

    27 mars 2015 à 12:05:13

    Bonjour à tous,

    Je suis sur un projet actuellement qui consiste à faire un MCD et ensuite l'importer sous MySQL. Après je dois faire un script qui me permettra de convertir mes fichier CSV( dans lesquelles j'ai mes données) en fichier SQL afin de pouvoir insérer les données dans les tables. 

    J'ai déjà fait le MCD et l'importation sous MySQL. Donc mes tables sont déjà créées. Mon problème se pose au niveau du script maintenant car je ne sais pas vraiment comment le faire et quel langage utiliser (j'ai pensé à du perl ou php).

    Je précise que le script devra tourné sous linux car c'est dessus que je travaille et que tout se fera.

    Si vous avez des suggestions, je suis preneuse. 

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2015 à 13:20:12

      Bonjour,

      Avec MySQL, l'import de données en base par fichier CSV peut se faire directement par la commande LOAD DATA INFILE.

      Pour plus d'information, tu peux t'appuyer sur le cours MySQL d'OpenClassRooms, dans la partie 1 au chapitre 7.

      Un peu de recherche avant de poster ne t'aurait pas fais de mal ;)

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        27 mars 2015 à 13:54:30

        Merci déjà  pour ta réponse.

        Mais le but justement n'est pas de passer par ce genre de méthode (sinon je l'aurai fait) Il faut absolument que je fasse un script en R, perl ou php pour insérer les données.

        Benzouye a écrit:

        Bonjour,

        Avec MySQL, l'import de données en base par fichier CSV peut se faire directement par la commande LOAD DATA INFILE.

        Pour plus d'information, tu peux t'appuyer sur le cours MySQL d'OpenClassRooms, dans la partie 1 au chapitre 7.

        Un peu de recherche avant de poster ne t'aurait pas fais de mal ;)



        • Partager sur Facebook
        • Partager sur Twitter
          27 mars 2015 à 14:15:36

          Ok.

          Je vais te répondre en PHP puisque je ne connais ni Perl ni Ruby :)

          Regardes du côté de la fonction PHP fgetcsv. Elle te permet d'ouvrir en PHP un fichier CSV et de la parcourir ligne par ligne. A partir de là, tu peux soit exécuter un INSERT par ligne, soit concaténer les valeurs à insérer pour ne faire qu'un seul INSERT en fin de parcours du CSV.

          A dispo si besoin de clarifier ;)

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            27 mars 2015 à 14:46:42

            Bonjour! tu peux envoyer ta requête via php, c'est ce qui se fait assez plus souvent pour interroger un base sql :

            <?php
            
                    $link = mysqli_connect("localhost","login","password","ta_base");
                            if(!$link){
                                    die("Erreur de connexion à MySQL");
                                    }
            
            mysqli_query($link,'LOAD DATA LOCAL INFILE \'tonfichier.csv\' INTO TABLE ta_table FIELDS TERMINATED BY \';\' ENCLOSED BY \'"\' ESCAPED BY \'\' LINES TERMINATED BY \'\n\' ') or die("Erreur mise à jour table : ".mysqli_error($link));
            
            ?>


            Il y a peut être certaines choses à changer selon la structure de ta base mais c'est ce genre de script que j'utilise pour alimenter ma base en php.

            -
            Edité par Sam Doe 27 mars 2015 à 14:47:40

            • Partager sur Facebook
            • Partager sur Twitter
              27 mars 2015 à 14:59:18

              Exécuter LOAD DATA INFILE avec PHP c'est ajouter une couche pour rien. Sauf si il y a de l'intelligence à fournir avant l'exécution de la commande : test de fichier, variables sur noms de table, etc.

              Dans le cas d'une initialisation de base de données je ne vois pas l'intérêt ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                27 mars 2015 à 15:02:59

                Sam Doe a écrit:

                Bonjour! tu peux envoyer ta requête via php, c'est ce qui se fait assez plus souvent pour interroger un base sql :

                <?php
                
                        $link = mysqli_connect("localhost","login","password","ta_base");
                                if(!$link){
                                        die("Erreur de connexion à MySQL");
                                        }
                
                mysqli_query($link,'LOAD DATA LOCAL INFILE \'tonfichier.csv\' INTO TABLE ta_table FIELDS TERMINATED BY \';\' ENCLOSED BY \'"\' ESCAPED BY \'\' LINES TERMINATED BY \'\n\' ') or die("Erreur mise à jour table : ".mysqli_error($link));
                
                ?>


                Il y a peut être certaines choses à changer selon la structure de ta base mais c'est ce genre de script que j'utilise pour alimenter ma base en php.

                -
                Edité par Sam Doe il y a moins de 30s


                Merci pour la réponse.

                Donc si je comprends bien, si je fais ça, il se connecte à la base, ouvre le fichier csv et insert directement les données du fichier dans les tables qui se trouve dans ma base de données? c'est bien ça?

                • Partager sur Facebook
                • Partager sur Twitter
                  27 mars 2015 à 15:21:49

                  skeezy a écrit:

                  Donc si je comprends bien, si je fais ça, il se connecte à la base, ouvre le fichier csv et insert directement les données du fichier dans les tables qui se trouve dans ma base de données? c'est bien ça?

                  C'est bien ça ...

                  Pour plus de détail cf. la doc MySQL.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    27 mars 2015 à 15:23:00

                    Benzouye a écrit:

                    Ok.

                    Je vais te répondre en PHP puisque je ne connais ni Perl ni Ruby :)

                    Regardes du côté de la fonction PHP fgetcsv. Elle te permet d'ouvrir en PHP un fichier CSV et de la parcourir ligne par ligne. A partir de là, tu peux soit exécuter un INSERT par ligne, soit concaténer les valeurs à insérer pour ne faire qu'un seul INSERT en fin de parcours du CSV.

                    A dispo si besoin de clarifier ;)

                    Le but c'est d'avoir un fichier csv que j'ouvrirai dans php et dans le fichier php je ferai des INSRERT en parcourant le fichier csv non? sans oublier la connexion à la base de données 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 mars 2015 à 15:24:54

                      ok merci. Je vais essayer de le faire et je vous dirai ce qu'il en est. 

                      Merci encore

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 mars 2015 à 10:26:53

                        Bonjour à tous,

                        je reviens car mon chef m'a dit qu'il ne voulait pas procédé comme ça en fait. (on s'était mal compris).

                        En fait il veut un script qui créer un nouveau fichier .sql dans lequel on mettra des INSERT avec les données du fichier .csv .

                        Donc je dois ouvrir le fichier csv , ajouter des insert ligne par ligne ou faire un bloc et le mettre dans un fichier.sql qui n'existe pas. ET c'est le fichier .sl que l'on exécutera pour le chargement de la base de données.

                        Si vous savez comment le faire en php cela m'aiderait. Merci d'avance

                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 mars 2015 à 10:40:18

                          Benzouye a écrit:

                          Ok.

                          Je vais te répondre en PHP puisque je ne connais ni Perl ni Ruby :)

                          Regardes du côté de la fonction PHP fgetcsv. Elle te permet d'ouvrir en PHP un fichier CSV et de la parcourir ligne par ligne. A partir de là, tu peux soit exécuter un INSERT par ligne, soit concaténer les valeurs à insérer pour ne faire qu'un seul INSERT en fin de parcours du CSV.

                          A dispo si besoin de clarifier ;)



                          • Partager sur Facebook
                          • Partager sur Twitter
                          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                          Convertir un fichier CSV en un fichier SQL

                          × 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