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 :

[PERL Postgresql] - impossible de vider une table avec la fonction "truncate table"


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Février 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Février 2019
    Messages : 13
    Par défaut [PERL Postgresql] - impossible de vider une table avec la fonction "truncate table"
    Bonjour, je suis nouveau sur le forum.

    Je voudrais utiliser sous perl la fonction sql "truncate table" qui vide une table instantanément tout en conservant sa structure.

    Malheureusment quand je lance mon script, perl ne fait état d'aucune erreur, mais quand je consulte en base, les données sont toujours là...

    chers amis, comment faire pour faire fonctionner cette requete???? (delete from where étant très long, truncate est bien plus puissant)


    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
    --------------------------------------------
     
    use strict;
    use DBI;
    use File::Basename;
    use File::Copy qw/ move mv /;
    use lib "$ENV{'HOME'}/public_html/validation/";
    use connection;
     
     
    my $dbd = connection::connect_taxation_DB ();
     
    ################################
    #                     TRUNCATE                         #
    ################################
     
    		#Je prépare ma requete SQL
    my $requete = 'TRUNCATE bati_52';
     
    my $prep = $dbd->prepare($requete)
    		    or die 'Impossible de préparer la requête : '.$dbd->errstr;
     
    #J"execute ma requete SQL
    $prep->execute()
    		    or die 'Impossible d\'exécuter la requête : '.$prep->errstr;
     
     
    $prep->finish;
     
     
    $dbd->disconnect;
     
     
    <>;

  2. #2
    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
    Hum, je ne connais pas vraiment Postgresql, mais la syntaxe Perl me paraît correcte à vue de nez. Quelques questions pour essayer de trouver des pistes.

    Je ne sais pas ce que fait cette ligne qui semble faire appel à un module "maison":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $dbd = connection::connect_taxation_DB ();
    Est-ce que, après avoir exécuté cette commande, tu peux exécuter avec succès d'autres requêtes SQL, par exemple un SELECT ou un DELETE FROM? Je désire savoir si tu te connectes bien correctement à la base et peux y exécuter des requêtes SQL autres.

    Est-ce que ça fonctionne si tu exécutes la commande:
    à l'invite d'un environnement psql? (Je pense à un éventuel problème de droits ou privilèges.)

    J'ai bien compris que tu désires utiliser un truncate pour des raisons de performances, mais est-ce que tu arrives à vider ta table avec un DELETE FROM?

  3. #3
    Membre actif
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Février 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Février 2019
    Messages : 13
    Par défaut
    Bonjour lolo,

    my $dbd = connection::connect_taxation_DB (); ---> c'est effectivement un fichier externe avec les données de connexion à la base de données.

    Select et delete from fonctionnent parfaitement.

    TRUNCATE bati_52 ne donne rien...

  4. #4
    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
    Citation Envoyé par bibimgn Voir le message
    TRUNCATE bati_52 ne donne rien...
    Tu veux dire que ça ne marche pas non plus à l'invite d'un environnement psql? Cela pourrait bien confirmer un éventuel problème de privilèges. Et tout cas, cela semble indiquer qu'il ne s'agit sans doute pas d'un problème Perl, mais plutôt d'un problème PortgreSQL.

  5. #5
    Membre actif
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Février 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Février 2019
    Messages : 13
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Tu veux dire que ça ne marche pas non plus à l'invite d'un environnement psql? Cela pourrait bien confirmer un éventuel problème de privilèges. Et tout cas, cela semble indiquer qu'il ne s'agit sans doute pas d'un problème Perl, mais plutôt d'un problème PortgreSQL.
    Cela fonctionne bien sur PostgreSQL...

  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
    Bonjour,

    essaie peut-être la syntaxe suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $requete = 'TRUNCATE TABLE bati_52';

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 358
    Par défaut
    Bonjour,

    En principe, dans les docs, pour les erreurs, ils utilisent $DBI::errstr.

    Et si tu faisais un essai avec do au lieu de prepare et execute ?

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bonsoir,

    Perl et les bases de données (DBI)

    Bonne lecture.

  9. #9
    Membre actif
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Février 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Février 2019
    Messages : 13
    Par défaut
    Bonjour, j'ai modifié mon code de la sorte, mais ça n'a pas fonctionné...

    La requête fonctionne en SQL pur sur le SGBD; mais sur le perl toujours pas...

    ----------------------

    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
    use strict;
    use DBI;
    use File::Basename;
    use File::Copy qw/ move mv /;
    use lib "$ENV{'HOME'}/public_html/validation/";
    use connection;
     
     
    my $dbd = connection::connect_taxation_DB ();
     
    ################################
    #                     TRUNCATE                         #
    ################################
     
    		#Je prépare ma requete SQL
    my $requete = 'TRUNCATE bati_52';
     
    my $prep = $dbd->do($requete)
    		    or die 'Impossible de préparer la requête : '.$DBI::errstr;
     
     
     
    $dbd->disconnect;
     
     
    <>;

Discussions similaires

  1. [AC-2007] Vider une table (probleme avec nom de la table)
    Par Imitator92 dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/07/2010, 19h20
  2. Vider une table avec EmtyTable() : ERREUR
    Par devlopassion dans le forum C++Builder
    Réponses: 3
    Dernier message: 23/08/2008, 13h23
  3. [8.5] Impossible de creer une table croisée avec une variable shared
    Par rihiveli dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 20/04/2007, 10h32
  4. Impossible de remplir une table avec Wamp
    Par RuesToulonnaises dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/03/2007, 20h18
  5. Vider une table avec une macro
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 24/05/2006, 13h23

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