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

SGBD Perl Discussion :

Exécuter fichiers sql


Sujet :

SGBD Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut Exécuter fichiers sql
    Bonjour à tous

    Je souhaiterais exécuter directement plusieurs fichiers .sql dans un script perl

    Voici un extrait de code : (je sais que de nombreuses optimisations peuvent etre faite mais j'aimerais que cela fonctionne avant d'optimiser)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    use warnings;
    use strict;
    use Time::Piece;
    use Spreadsheet::ParseExcel;
    use DBI;
    use DBD::mysql;
     
    print "(o)RP(o)\n\n";
     
    my $dbh = DBI->connect('DBI:mysql:eBase4', 'root', 'root'
    	           ) || die "Could not connect to database: $DBI::errstr";	           
    my $sth;
    my $MySqlQuery;
     
     
    # -----------------------------------
    # Drop database and create an other one 
    # -----------------------------------
    my $File = "ReInitBase.sql";
    my $FilePath = "../Sql/Base/${File}";
    $MySqlQuery = $FilePath; 
    print $MySqlQuery, "\n";
    $sth = $dbh->prepare($MySqlQuery);
    $sth->execute();
     
     
    # -----------------------------------
    # File Info Insertion 
    # -----------------------------------
    $File = "InsertFileInfo.sql";
    $FilePath = "../Sql/Data/${File}";
    $MySqlQuery = $FilePath; 
    print $MySqlQuery, "\n";
    $sth = $dbh->prepare($MySqlQuery);
    $sth->execute();
     
    # -----------------------------------
    # Network Insertion 
    # -----------------------------------
    $File = "NetworkInsertions.sql";
    $FilePath = "../Sql/Data/${File}";
    $MySqlQuery = $FilePath; 
    print $MySqlQuery, "\n";
    $sth = $dbh->prepare($MySqlQuery);
    $sth->execute();
     
    $sth->finish();
    $dbh->disconnect();
    ReInitBase.sql : fichier servant à vider la base
    InsertFileInfo.sql & AfdxNetworkInsertions.sql : insertions dans la base

    Le problème est le suivant : les fichiers .sql ne sont pas exécutés (aucune insertions dans la base et la base n'est pas vidée)

    Je cherche à exécuter directement le .sql comme ça je peux jongler entre mon script perl et MYSQL workbench au niveau de me requête.

    Merci de votre aide par avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    tes fichiers .sql contiennent quoi? juste une requête?
    dans ce cas, ce n'est pas mieux d'importer la requête et de faire son appel/traitement dans ton script?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Le premier fichier contient un drop database et un create database ainsi que les principales creations des tables constituant la base

    Les deux autres sont un ensemble de requetes INSERT et quelques creations de tables

    J'y ai pensé à ta solution ( je fais ta solution dans d'autres script perl) mais bon là je trouvais ça pratique de faire ainsi. De cette manière j'ouvre mon fichier sql et je copie colle le contenu dans MYSQL workbench.

    De plus, MYSQL workbench permet d'enregistrer les requetes que tu fait en .sql
    Donc tu teste ta requête avec MYSQL workbench et après tu la sauvegardes en .sql. Comme ça pas besoin de mettre à jour le script perl

    Le script perl a été créé afin de rendre plus convivial la création de la base.

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Ok je comprends.
    perso, je préfère récupérer les requêtes contenues dans 1 (ou plusieurs fichiers) dans un array (attention aux espaces lors de la récupération )

    et ensuite, pour chaque requête, je lui fais réaliser les requêtes (si j'ai des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @liste_requetes= ('CREATE TABLE...', 'INSERT TO...', ...);  
    foreach my requete ( @liste_requetes ){
         $dbh->do($requete);
    }
    Ainsi si tu veux modifier les requêtes, il te suffit de modifier le fichier '.sql' (et tu touche pas aux script) qui contient les requêtes (ce fichier pourra être créé lors de ton test avec MYSQL workbench)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    Ok je comprends.
    perso, je préfère récupérer les requêtes contenues dans 1 (ou plusieurs fichiers) dans un array (attention aux espaces lors de la récupération )

    et ensuite, pour chaque requête, je lui fais réaliser les requêtes (si j'ai des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @liste_requetes= ('CREATE TABLE...', 'INSERT TO...', ...);  
    foreach my requete ( @liste_requetes ){
         $dbh->do($requete);
    }
    Ainsi si tu veux modifier les requêtes, il te suffit de modifier le fichier '.sql' (et tu touche pas aux script) qui contient les requêtes (ce fichier pourra être créé lors de ton test avec MYSQL workbench)
    Oui c'est comme ça que je fais normalement.

    Mais cela résout pas mon problème :

    si tu remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @liste_requetes= ('CREATE TABLE...', 'INSERT TO...', ...);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @liste_requetes= ('fichier.sql', '...', ...);
    Cela n'a pas l'air de fonctionner. As tu fait le test de ton coté ou sais tu pourquoi ?

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    non pas testé car pas le temps.
    Je suis pas sûr que tu puisses exécuter directement ton fichier (d'ailleurs est-ce que tes fichiers sont exécutables (chmod +x si tu es sous Linux))

    les autres choses qui peuvent poser des problèmes sont les lignes vides, des espaces en début/fin lignes....

    dès que j'ai un peu de temps je regarde ça plus sérieusement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter fichier.sql avec requete sans console PostgreSQL
    Par fidepaix dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/12/2013, 09h42
  2. Exécuter fichier .sql
    Par dark_botsay dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 01/03/2013, 19h02
  3. problème d'exécution fichier.sql
    Par rezguiinfo dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/11/2010, 14h31
  4. [SQL2005][TSQL] Exécuter fichier sql depuis un script
    Par mbsl1 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/11/2008, 12h19
  5. [C#][.NET2][SQL]Exécution fichier .sql
    Par ben_popcorn dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/04/2007, 22h30

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