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

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    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 averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 406
    Points
    406
    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 du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    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 averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 406
    Points
    406
    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 du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    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 averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 406
    Points
    406
    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

  7. #7
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Si le fichier script SQL est complet, pourquoi ne pas l'exécuter comme une commande système (avec les backticks, par ex: `toto.sql`)?

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    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
    Je suis sous windows ! le fichier est syntaxiquement correct mais il y a des lignes vides. Je n'ai pas le fichier sous la main actuellement je posterais un exemple plus tard.

    Citation Envoyé par Lolo78 Voir le message
    Si le fichier script SQL est complet, pourquoi ne pas l'exécuter comme une commande système (avec les backticks, par ex: `toto.sql`)?
    Tu parles directement dans le script PERL via la commande system ?

  9. #9
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Euh, j'ai probablement dit une bêtise, un fichier sql pur n'est sans doute pas exécutable seul. Avec Oracle, on peut éventuellement émettre une commande système sqlplus + identifiants de connexion + le script à exécuter (je n'ai pas essayé, en tous cas pas récemment, mais je pense que ça devrait pouvoir marcher).

    Je ne connais pas bien mysql, mais j'imagine que l'on doit pouvoir exécuter une commande système du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql my_database < script.sql
    et récupérer les données renvoyées.

    Mais c'est juste une possible solution de contournement. A priori, je préfère l'idée de lire le fichier en entrée et exécuter ses commandes une à une via DBI. Mais, bon, comme je ne travaille que rarement sur des bases de données avec DBI (et beaucoup plus sur des fichiers plats de type CSV ou autres), mon avis n'est pas celui d'un spécialiste.

  10. #10
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,
    Voici comment je procède pour exécuter des script.sql Oracle dans Perl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Création des tables
    foreach my $Script ( 'CreTabRegions.sql', 'CreTabCommunes.sql', 'CreTabDepartements.sql') {
    	print "Exécution de $Script\n";
    	open( SQL, $Script) or die "\nERR=open $Script\n $!";
    	my @Sqls = split(/\n\//,join('',<SQL>));
    	for my $Sql( @Sqls ){
    		# print "SEL=$Sql=\n";
    		if ( $Sql ) {
       		$dbh->do($Sql); # or die "\nERR=dbh->do\n $! \n $@\n$DBI::errstr";
    		}
    	}
    	close SQL;
    }
    Exemple CreTabRegions.sql :
    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
    DROP TABLE Regions
    /
     
    CREATE TABLE Regions ( 
    	id_region INT            NOT NULL ,
    	cheflieu  VARCHAR( 6 )   NOT NULL ,
    	tncc      INT            NOT NULL ,
    	ncc       VARCHAR( 50 )  NOT NULL ,
    	nccenr    VARCHAR( 50 )  NOT NULL ,
    	PRIMARY KEY ( id_region )
    ) tablespace USERS
    /
     
    COMMENT ON TABLE Regions is 'LES REGION DE FRANCE EN 2013'
    /
    NB : il y a des lignes vides, elles ne gênent en rien, on pourrait si besoin lire le fichier <SQL> ligne à ligne et intervenir sur chacune d'elles...
    Le tout est dans le tuto de djibril rubrique II-C-2-a. Exemple sous Oracle

    [EDIT 08:55]
    Comme le suggère Lolo78, il n'est pas nécessaire de sortir l'artillerie DBI pour lancer un script sql sur une base depuis Perl.
    Il suffit d'un script shell ou .bat, par exemple en Windows ORAU.bat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus michel/michel %1
    et dans le Perl par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Cde = ("ORAU CreTabRegions.sql");
    system @Cde;
    Avec variable PATH à jour et CreTabRegions.sq dans répertoire courant ou bien Path complets.

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par dmganges Voir le message
    Bonjour,
    Voici comment je procède pour exécuter des script.sql Oracle dans Perl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Création des tables
    foreach my $Script ( 'CreTabRegions.sql', 'CreTabCommunes.sql', 'CreTabDepartements.sql') {
    	print "Exécution de $Script\n";
    	open( SQL, $Script) or die "\nERR=open $Script\n $!";
    	my @Sqls = split(/\n\//,join('',<SQL>));
    	for my $Sql( @Sqls ){
    		# print "SEL=$Sql=\n";
    		if ( $Sql ) {
       		$dbh->do($Sql); # or die "\nERR=dbh->do\n $! \n $@\n$DBI::errstr";
    		}
    	}
    	close SQL;
    }
    Exemple CreTabRegions.sql :
    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
    DROP TABLE Regions
    /
     
    CREATE TABLE Regions ( 
    	id_region INT            NOT NULL ,
    	cheflieu  VARCHAR( 6 )   NOT NULL ,
    	tncc      INT            NOT NULL ,
    	ncc       VARCHAR( 50 )  NOT NULL ,
    	nccenr    VARCHAR( 50 )  NOT NULL ,
    	PRIMARY KEY ( id_region )
    ) tablespace USERS
    /
     
    COMMENT ON TABLE Regions is 'LES REGION DE FRANCE EN 2013'
    /
    NB : il y a des lignes vides, elles ne gênent en rien, on pourrait si besoin lire le fichier <SQL> ligne à ligne et intervenir sur chacune d'elles...
    Le tout est dans le tuto de djibril rubrique II-C-2-a. Exemple sous Oracle

    [EDIT 08:55]
    Comme le suggère Lolo78, il n'est pas nécessaire de sortir l'artillerie DBI pour lancer un script sql sur une base depuis Perl.
    Il suffit d'un script shell ou .bat, par exemple en Windows ORAU.bat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus michel/michel %1
    et dans le Perl par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Cde = ("ORAU CreTabRegions.sql");
    system @Cde;
    Avec variable PATH à jour et CreTabRegions.sq dans répertoire courant ou bien Path complets.
    Voici un des fichiers sql :

    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
    51
    52
     
     
    /* ------------------------------------ */
    /* Base: eData_Rev1-5				*/
    /* SGBD: Mysql					*/
    /* Writer: Freddy   				*/
    /* Date: 23/04/2013 				*/
    /* ------------------------------------ */
     
    DROP DATABASE ebase5;
    CREATE DATABASE ebase5;
     
    CREATE TABLE ebase5.eDataStatusEnum (
    	DsId integer NOT NUll AUTO_INCREMENT, 
      	DsName varchar(64) NOT NULL,
    	DsEnumList varchar(400) NOT NULL,
      	PRIMARY KEY (DsId),
      	UNIQUE (DsId)
    );
     
    CREATE TABLE ebase5.eDatas (
    	DaId integer NOT NUll AUTO_INCREMENT, 
      	DaName varchar(64) NOT NULL,
    	DaSizeInByte integer,
      	DaSizeInBit boolean,
      	DaStatusEnumId integer, 
      	DaGatewayId integer,
      	DaDescription varchar(256),
      	PRIMARY KEY (DaId),
      	UNIQUE (DaId),
      	FOREIGN KEY (DaStatusEnumId) REFERENCES ebase5.eDataStatusEnum(DsId)
    );
     
    CREATE TABLE ebase5.eDataPackets (
    	DpId integer NOT NUll AUTO_INCREMENT, 
    	DpName varchar(64) NOT NULL,
    	DpPacketHdr integer,
    	DpA429Label integer(3),
      	DpSize integer(5),
      	DpRate integer(5),
      	PRIMARY KEY (DpId),
      	UNIQUE (DpId)
    );
     
    CREATE TABLE ebase5.Lru (
      LruId integer NOT NULL, 
      LruName varchar(32) NOT NULL,
      LruSide int(1) NOT NULL,
      LruDescription varchar(64),
      PRIMARY KEY (LruId), 
      UNIQUE (LruId)
    );
    dmganges peux tu m'expliquer à quoi te sert la dernière partie du split ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @Sqls = split(/\n\//,join('',<SQL>));

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 406
    Points
    406
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @Sqls = split(/\n\//,join('',<SQL>));
    join('',<SQL>) -> tu crées une chaine de caractères avec toutes les lignes du fichier
    split(/\n\//, ) -> tu découpes cette chaine quand tu rencontres un retour à la ligne (\n) suivi du caractère '/'

    en fait si tu regardes son fichier sql, tu verras qu'ainsi, il sépare les différentes requêtes

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @Sqls = split(/\n\//,join('',<SQL>));
    join('',<SQL>) -> tu crées une chaine de caractères avec toutes les lignes du fichier
    split(/\n\//, ) -> tu découpes cette chaine quand tu rencontres un retour à la ligne (\n) suivi du caractère '/'

    en fait si tu regardes son fichier sql, tu verras qu'ainsi, il sépare les différentes requêtes
    En fait j'avais mal compris join('',<SQL>)

    voici le script pour info (encore non totalement optimisé mais répondant totalement au problème de cette discussion) :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    #!/usr/bin/perl
     
    ###############################################################################
    #
    # Routine to execute insertions in database ( sql and perl script )
    #
    # XXXXXXXXXXXX
     
    use warnings;
    use strict;
    use Time::Piece;
    use Spreadsheet::ParseExcel;
    use DBI;
    use DBD::mysql;
     
    print "(o)RP(o)\n\n";
     
    # Declaration
    my $MySqlQuery;
    my @Sqls;
    my $sql;
    my $dbh; 
     
    # Open link on database
    $dbh= DBI->connect('DBI:mysql:eBase6', 'xxxxx', 'xxxxx'
    	           ) || die "Could not connect to database: $DBI::errstr";	           
     
    print "-----------------------------------------------------------------\n";
    print "\tReinitBase starting\n"; 
     
    # Retrieve FilePath of sql file to execute
    my $File = "ReInitBase.sql";
    my $FilePath = "../Sql/Base/${File}";
     
    # Open SQL on sql file    
    open (SQL,$FilePath) || die "IO error\n";
     
    # Retrieve each sql command in the sql file and execute them one by one
    @Sqls = split(/;/,join('',<SQL>));
    for $sql (@Sqls)
    {
       $dbh->do($sql);
       #print "SQL request: ", $sql ,"\n";
    }
    print "\tReinitBase End\n";
    print "-----------------------------------------------------------------\n\n";
    print "-----------------------------------------------------------------\n";
    print "\tInsert File Info starting\n";
     
    # Retrieve FilePath of sql file to execute
    $File = "InsertFileInfo.sql";
    $FilePath = "../Sql/Data/${File}"; 
     
    # Open SQL on sql file 
    open (SQL,$FilePath) || die "IO error\n";
     
    # Retrieve each sql command in the sql file and execute them one by one
    @Sqls = split(/;/,join('',<SQL>));
    for $sql (@Sqls)
    {
       $dbh->do($sql);
       #print "SQL request: ", $sql ,"\n";
    }
     
    print "\tInsert File Info End\n";
    print "-----------------------------------------------------------------\n\n";
    print "-----------------------------------------------------------------\n";
    print "\tAFDX Insertion starting\n";
     
    # Retrieve FilePath of sql file to execute
    $File = "AfdxNetworkInsertions.sql";
    $FilePath = "../Sql/Data/${File}";
     
    # Open SQL on sql file 
    open (SQL,$FilePath) || die "IO error\n";
     
    # Retrieve each sql command in the sql file and execute them one by one
    @Sqls = split(/;/,join('',<SQL>));
    for $sql (@Sqls)
    {
       $dbh->do($sql);
       #print "SQL request: ", $sql ,"\n";
    }
     
    print "\tAFDX Insertion End\n";
    print "-----------------------------------------------------------------\n\n";
     
    $dbh->disconnect();
     
    my @Files =("InsertSwSignalNames_init.pl", 
       "InsertSwSignalNames_Dra_Edmu.pl", 
       "InsertSwSignalNames_Edmu_Data.pl", 
       "InsertSwSignalNames_Edmu_Xtalk.pl",
       "InsertSwSignalNames_Ima_Edmu.pl");
     
    foreach my $FileName (@Files) 
    { 
    system ("perl -w ./${FileName}");
    }
     
    system ("perl -w InsertEdimtAndSwParam9.pl ../Inputfiles/icd_afdx_edimt_add_sw_select.xls");
    system ("perl -w InsertCan.pl");
    Merci à tous de votre aide

+ 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