Problem de split
montisero
Messages postés
65
Date d'inscription
Statut
Membre
Dernière intervention
-
montisero Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
montisero Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problem au niveau de l'insertion dans ma base mysql ,il m'affiche toujours que la valeur du champ Port est null , donne moi vos aide svp .
voiçi le message d'erreur " DBD::mysql::st execute failed: Column 'Port' cannot be null at bd_copy.pl line 46, <$fh_regions> line 2 "
mon code est celui là :
use warnings;
use strict;
use Encode;
use utf8;
use DBI; # Charger le module DBI
use vars qw/ $VERSION /; # Version du script
$VERSION = '1.0';
ActiverAccents();
# Paramètres de connection à la base de données
my $bd = 'switchs';
my $serveur = 'localhost'; # Il est possible de mettre une adresse IP
my $identifiant = 'root'; # identifiant
my $motdepasse ='';
my $port = '3306'; #Si vous ne savez pas, ne rien mettre
# Connection à la base de données mysql
print "Connexion à la base de données $bd\n";
my $dbh = DBI->connect( "DBI:mysql:database=$bd;host=$serveur;port=$port",$identifiant,$motdepasse, {
RaiseError => 1,
}
) or die "Connection impossible à la base de données $bd !\n $! \n $@\n$DBI::errstr";
# Lecture des fichiers et insertion des données
my $fichier_regions = '/root/Desktop/switch_10/show_Inter_Status_txt';
# Fichier Region
print "Insertion des données dans la table Switch_10\n";
open my $fh_regions, '<:encoding(UTF-8)', $fichier_regions or die "Impossible de lire le fichier $fichier_regions\n";
my $entete_fichier_region = <$fh_regions>;
# Insertion des données
my $requete_sql_region = <<"SQL";
INSERT INTO Switch_10(Port,Name,Status,Vlan,Duplex,Speed,Type)
VALUES (?, ?, ?, ?, ?, ?, ? );
SQL
my $sth_regions = $dbh->prepare($requete_sql_region);
while ( my $ligne = <$fh_regions> ) {
chomp $ligne;
# my ( $VLan, $Name, $Status, $Port ) = split /\t/, $ligne;
my ($Port,$Name,$Status,$Vlan,$Duplex,$Speed,$Type) = split/,/,$ligne;
$sth_regions->execute()
or die "Echec Requête $requete_sql_region : $DBI::errstr";
}
close $fh_regions;
# Déconnection de la base de données
$dbh->disconnect();
#==============================================================
# Pour avoir les accents sur la console DOS ou non
# https://perl.developpez.com/faq/perl/?page=Terminal#Accents
#==============================================================
sub ActiverAccents {
my $encodage;
# Windows
if ( lc($^O ) eq 'mswin32') {
eval {
my ($codepage) = ( `chcp` =~ m/:\s+(\d+)/ );
$encodage = "cp$codepage";
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
else {
$encodage = `locale charmap`;
eval {
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
return $encodage;
}
J'ai un problem au niveau de l'insertion dans ma base mysql ,il m'affiche toujours que la valeur du champ Port est null , donne moi vos aide svp .
voiçi le message d'erreur " DBD::mysql::st execute failed: Column 'Port' cannot be null at bd_copy.pl line 46, <$fh_regions> line 2 "
mon code est celui là :
use warnings;
use strict;
use Encode;
use utf8;
use DBI; # Charger le module DBI
use vars qw/ $VERSION /; # Version du script
$VERSION = '1.0';
ActiverAccents();
# Paramètres de connection à la base de données
my $bd = 'switchs';
my $serveur = 'localhost'; # Il est possible de mettre une adresse IP
my $identifiant = 'root'; # identifiant
my $motdepasse ='';
my $port = '3306'; #Si vous ne savez pas, ne rien mettre
# Connection à la base de données mysql
print "Connexion à la base de données $bd\n";
my $dbh = DBI->connect( "DBI:mysql:database=$bd;host=$serveur;port=$port",$identifiant,$motdepasse, {
RaiseError => 1,
}
) or die "Connection impossible à la base de données $bd !\n $! \n $@\n$DBI::errstr";
# Lecture des fichiers et insertion des données
my $fichier_regions = '/root/Desktop/switch_10/show_Inter_Status_txt';
# Fichier Region
print "Insertion des données dans la table Switch_10\n";
open my $fh_regions, '<:encoding(UTF-8)', $fichier_regions or die "Impossible de lire le fichier $fichier_regions\n";
my $entete_fichier_region = <$fh_regions>;
# Insertion des données
my $requete_sql_region = <<"SQL";
INSERT INTO Switch_10(Port,Name,Status,Vlan,Duplex,Speed,Type)
VALUES (?, ?, ?, ?, ?, ?, ? );
SQL
my $sth_regions = $dbh->prepare($requete_sql_region);
while ( my $ligne = <$fh_regions> ) {
chomp $ligne;
# my ( $VLan, $Name, $Status, $Port ) = split /\t/, $ligne;
my ($Port,$Name,$Status,$Vlan,$Duplex,$Speed,$Type) = split/,/,$ligne;
$sth_regions->execute()
or die "Echec Requête $requete_sql_region : $DBI::errstr";
}
close $fh_regions;
# Déconnection de la base de données
$dbh->disconnect();
#==============================================================
# Pour avoir les accents sur la console DOS ou non
# https://perl.developpez.com/faq/perl/?page=Terminal#Accents
#==============================================================
sub ActiverAccents {
my $encodage;
# Windows
if ( lc($^O ) eq 'mswin32') {
eval {
my ($codepage) = ( `chcp` =~ m/:\s+(\d+)/ );
$encodage = "cp$codepage";
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
else {
$encodage = `locale charmap`;
eval {
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
return $encodage;
}
A voir également:
- Problem de split
- Split cam - Télécharger - Messagerie
- Split 4g - Télécharger - Gestion de fichiers
- Hj split - Télécharger - Gestion de fichiers
- Split mp3 - Télécharger - Édition & Montage
- Split photo instagram - Guide
1 réponse
Voiçi le contenu de mon fichier qui contient les données :
Fa0/1,W,connected,71,a-full,a-100,10/100BaseTX
Fa0/2,W,connected,61,a-full,a-100,10/100BaseTX
Fa0/3,W,notconnect,141,auto,auto,10/100BaseTX
Fa0/4,W,connected,161,a-full,a-100,10/100BaseTX
Fa0/5,W,notconnect,111,auto,auto,10/100BaseTX
Fa0/6,W,notconnect,96,auto,auto,10/100BaseTX
Fa0/7,S,QL,notconnected,60,a-full,a-100,10/100BaseTX
Fa0/1,W,connected,71,a-full,a-100,10/100BaseTX
Fa0/2,W,connected,61,a-full,a-100,10/100BaseTX
Fa0/3,W,notconnect,141,auto,auto,10/100BaseTX
Fa0/4,W,connected,161,a-full,a-100,10/100BaseTX
Fa0/5,W,notconnect,111,auto,auto,10/100BaseTX
Fa0/6,W,notconnect,96,auto,auto,10/100BaseTX
Fa0/7,S,QL,notconnected,60,a-full,a-100,10/100BaseTX