Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exécution d'un .sql sur une zone Linux

    11 juin 2020 à 15:29:52

    Bonjour,

    Je possède un fichier en .sql qui me permet d'importer des données présentes dans un fichier CSV dans ma BDD.

    Cependant je n'arrive pas à faire en sorte que ce fichier s’exécute automatiquement afin d'alimenter ma BDD de manière quotidienne et totalement automatiser.

    Le .sql se trouve sur un serveur GLPI (sous linux)

    Si vous avez des idées ou autres je suis preneur merci bien

    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2020 à 17:06:50

      Bonjour,

      AlbuquerqueYohan a écrit:

      faire en sorte que ce fichier s’exécute automatiquement

      Sur un serveur linux il faut utiliser CRONTAB. Et exécuter soit une commande MySQL SOURCE, soit un fichier PHP qui lui exécute une commande MySQL SOURCE ...

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

        Merci pour les infos, en étant débutant quelle solution est la plus approprié (simple) ?

        Je vais exploiter les différentes pistes :)

        • Partager sur Facebook
        • Partager sur Twitter
          17 juin 2020 à 15:30:48

          Benzouye :) je met permet de te recontacter j'ai une autre question cette fois ci avec mon PHP.. du coup je vais executer mon PHP avec 'cmd' mais ma requete a l'interieur ne fonctionne pas.. 

          Requête SQL (fonctionne sur phpMyadmin) :

          LOAD DATA INFILE 'CHEMIN FICHIER' INTO TABLE cptadglobal

          FIELDS TERMINATED BY ';'

          ENCLOSED BY '"'

          LINES TERMINATED BY '\r\n'

          IGNORE 1 LINES;

          Code PHP :

          $connexion = new PDO ('mysql:host=localhost:3308;dbname=adapei69db;charset=utf8', 'root', '');
          
          $query = "DELETE FROM `cptadglobal`
          LOAD DATA INFILE 'C:\\wamp64\\tmp\\CPTADGLOBALTEST.csv' INTO TABLE cptadglobal;
          FIELDS TERMINATED BY ';'
          ENCLOSED BY '"'
          LINES TERMINATED BY '\r\n'
          IGNORE 1 LINES;";
          
          /* ---- $SQL GENERE A PARTIR DE PHPMYADMIN ---- */
          $sql ="DELETE FROM `cptadglobal`; LOAD DATA INFILE 'C:\\wamp64\\www\\CPTADGLOBALTEST.csv' INTO TABLE cptadglobal FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES";
          $reponse = $connexion->query($query);
          
          
          /*
          
                      ----CODE PHP GENERE A PARTIR DE PHPMYADMIN----
          
          $sql = "LOAD DATA INFILE \'C:\\\\wamp64\\\\tmp\\\\CPTADGLOBALTEST.csv\'\n"
          
              . "INTO TABLE cptadglobal\n"
          
              . "FIELDS TERMINATED BY \';\'\n"
          
              . "ENCLOSED BY \'\"\'\n"
          
              . "LINES TERMINATED BY \'\\r\\n\'\n"
          
              . "IGNORE 1 LINES";
          
          */

          Le delete fonctionne sans problème (logique) par contre pour la requête d'insertion message d'erreur :

          Parse error: syntax error, unexpected '' ' (T_CONSTANT_ENCAPSED_STRING)

          • Partager sur Facebook
          • Partager sur Twitter
            17 juin 2020 à 17:02:11

            Si tu regardes la coloration syntaxique de ton message tu vois le problème ...

            AlbuquerqueYohan a écrit:

            $sql =" ... LOAD DATA ... ENCLOSED BY '"' LINES TERMINATED ...";

            C'est un problème de guillemets ... Il faut échapper celui de ENCLOSED ...

            -
            Edité par Benzouye 17 juin 2020 à 17:02:45

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

            Exécution d'un .sql sur une zone Linux

            × 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