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

Langage Perl Discussion :

Requete SQL vers base MySQL


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 51
    Par défaut Requete SQL vers base MySQL
    Bonjour,
    Après avoir bataillé pour installer le module DBI et DBD-mySQL, j'ai enfin trouvé comment faire mon script.

    J'ai cependant des erreurs à l'execution, mais pas a la compilation.

    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
     
    ##### ouverture session #####
    Content-type: text/htmlnnDBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for
     the right syntax to use near ')' at line 1 at F:/export_data_sql_V4.pl line 302.
     
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
    near 'VALUES (2014-6/3/11/29 )' at line 1 at F:/export_data_sql_V4.pl line 308.
     
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
    near ')' at line 1 at F:/export_data_sql_V4.pl line 302.
     
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
    near 'VALUES (2014-6/3/11/29 )' at line 1 at F:/export_data_sql_V4.pl line 308.
     
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
    near ')' at line 1 at F:/export_data_sql_V4.pl line 302.
     
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
    near 'VALUES (2014-6/3/11/29 )' at line 1 at F:/export_data_sql_V4.pl line 308.
    je pose aussi la partie code des requetes :

    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
     
    sub session () 
     
        {
     
    		#Chemin d'acces aux adresses des IP Serveur, à modifier au besoin
    		my @servers = make_servers_list('F:/adresses_ip.txt'); 
    		my %params = make_params_list();
    		my $time = get_time();
     
    		foreach (@servers)
     
    		{
    			my $connection = start_connection($_);
    			my $dbh = start_connection_sql($_);
    			next unless ($connection);
    			my %values = get_values($connection, %params);
     
    			# log_write(%values);
    			end_connection($connection);
                                    foreach (@servers)
     
    			{
     
    			my $query = "INSERT INTO puissance( ID_Compteur, Puissance_P, Puissance_Q, Puissance_S, Dephasage) VALUES (";
    		  		foreach (keys %values) 
    				{ 
    		        	$query .= $values{$_}.", "; 
    		   		} chop; chop;
    				$query .= " )"; 
     
    	$sqlQuery  = $dbh->prepare($query) or die "Can't prepare $query: $dbh->errstrn";
    	$sqlQuery->execute(); 
     
    	$query = "INSERT INTO puissance(Date VALUES (".$time." )"; 
     
    	$sqlQuery  = $dbh->prepare($query) or die "Can't prepare $query: $dbh->errstrn";
     
    	$sqlQuery->execute(); }
    	}
    }

    Les requetes me paraissent bonnes, et la compile marche, du coup, je suis en galère pour mon script, j'ai tenté pas mal de versions mais pas d'avancée . . .

    Merci pour votre aide

    Ju

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    alors déjà à moins d'une erreur de recopie, il manque une parenthèse après Date
    $query = "INSERT INTO puissance(Date VALUES (".$time." )";
    ensuite il faut probablement entourer tes valeurs par des quotes, pour les non numériques au moins

    ensuite, pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (keys %values) 
    				{ 
    		        	$query .= $values{$_}.", "; 
    		   		} chop; chop;
    				$query .= " )";
    tu devrais consulter la méthode join

    enfin, l'opérateur keys ne garantit pas l'ordre de tes clés donc elles ne seront peut-être pas dans l'ordre dans lequel tu souhaites les entrer.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 51
    Par défaut MySQL
    Merci pour les réponses.
    J'ai donc rajouté les parenthese pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO puissance(Date VALUES (".$time." )";
    Et pour le quote, c'est noté. $
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query = "INSERT INTO puissance(Date VALUES ('".$time."'))";
    Et en faisant un print de mes requetes, j'obtiens bien les valeurs que je dois remonter.

    Cependant, lorsque je crois envoyer tout cela vers ma Bdd, j'ai toujours les erreurs de :


    ##### ouverture session #####
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the man
    ual that corresponds to your MySQL server version for the right syntax to use ne
    ar ')' at line 1 at F:/export_data_sql_V4.pl line 303.

    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to
    your MySQL server version for the right syntax to use near 'VALUES ('14:33/3/6/2014'))' at line 1 at F:/export_data_sql_V4.pl line 309.

    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to
    your MySQL server version for the right syntax to use near ')' at line 1 at F:/ex
    port_data_sql_V4.pl line 303.

    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to
    your MySQL server version for the right syntax to use near 'VALUES ('14:33/3/6/2014'))' at line 1 at F:/export_data_sql_V4.pl line 309.

    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to
    your MySQL server version for the right syntax to use near ')' at line 1 at F:/export_data_sql_V4.pl line 303.

    INSERT INTO Puissance(Date VALUES ('14:33/3/6/2014'))
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to
    your MySQL server version for the right syntax to use near 'VALUES ('14:33/3/6/2014'))' at line 1 at F:/export_data_sql_V4.pl line 309.

    Content-type: text/htmlnnContent-type: text/htmlnn

    ##### Fin session #####
    Press Enter to continue

    J'avouej e sche un peu là, car je ne vois pas pourquoi cela ne fonctionne pas, car les requetes sont bonnes, mais ne rentre pas dans ma Bdd.

    Merci pour votre coup de main

  4. #4
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    ta requête n'est toujours pas correcte, n'hésite pas à te référer à la documentation mysql.

    query = "INSERT INTO puissance(Date) VALUES ('".$time."')";

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 51
    Par défaut a
    Ok, merci pour la doc. Je regarde ça dans l'apres-midi.

    Juste une derniere chose, j'ai rajoutais les quotes pour les exports, ainsi que la parenthese pour (Date).

    Alors, mes erreurs ont changés, et j'obtiens cela :

    " You have an error in your SQL synthax" => je regarderais la doc sur les requetes SQL

    La parcontre, aucune idée d'ou cela peut venir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Can't execute INSERT INTO (Puissance_P  . . . ) DBI::db=HASH(0xf5ff94)->errstrn at line 306.
    Problème de mémoire dans la base ? ou autre chose alors ?

    Merci
    @+

  6. #6
    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
    Billets dans le blog
    1
    Par défaut
    Je n'utilise pas mySQL, mais cette requête paraît être du SQL suspect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "INSERT INTO puissance( ID_Compteur, Puissance_P, Puissance_Q, Puissance_S, Dephasage) VALUES (";
    La parenthèse ouvrante juste à la fin de la requête, suivie du guillemet, ne me semble pas correcte.

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

Discussions similaires

  1. Probleme de date dans requete SQL vers base de donnée MS Access
    Par Uren dans le forum Persistance des données
    Réponses: 1
    Dernier message: 04/08/2008, 13h06
  2. Réplication données depuis Base SQL Server vers Base MYSQL
    Par elspliffo dans le forum Réplications
    Réponses: 2
    Dernier message: 27/09/2007, 14h02
  3. Réplication données depuis Base SQL Server vers Base MYSQL
    Par elspliffo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/09/2007, 14h02
  4. Requete SQL sur base SQL Server VB6
    Par Yanmeunier dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/11/2005, 12h30
  5. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 22h28

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