Question
Ecrire dans une BDD
- COTTIN
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 84
- Remerciements reçus 0
il y a 13 ans 3 mois #13883
par COTTIN
Ecrire dans une BDD a été créé par COTTIN
Bonjour,
Je fait un Script qui lit un fichier texte et qui envoie ligne après ligne dans une variable.
Cette variable va être enregistrer dans une BDD.
Le problème se situe au niveau de l'insertion dans la BDD.
Il n'y a rien qui s'incrémente.
[code:1]
Function Variable {
[void][system.reflection.Assembly]::LoadWithPartialName(\"MySql.Data\"«»)
#cd \"\\10.100.2.47\c$\Script\log imprimante\\"
cd \"U:\Script\log imprimante\"
}
Function Traitement {
Get-Content 0INFO*.log | Select-String -Pattern \"0INFO\" > temp.txt
Get-Content temp.txt| %{ $_.Split(';')[1];} > PCimp.txt
Get-Content temp.txt| %{ $_.Split(';')[2];} > IPimp.txt
Get-Content temp.txt| %{ $_.Split(';')[3];} > Dateimp.txt
rm temp.txt
}
Function Connect_Mysql {
$port = \"3306\"
$srv = \"127.0.0.1\"
$user = \"root\"
$mdp = \"\"
$bdd = \"cds\"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = \"server=$srv;port=$port;uid=$user;pwd=$mdp;database=$bdd;Pooling=False\"
$connection.Open()
for ($i = 1;$i -lt 42; $i++){ (Get-Content PCimp.txt -totalcount $i)[-1] > temp.txt
$name = Get-Content temp.txt
$query = \"INSERT INTO cds (Poste,IP,Date) VALUES($name,'{1}','{2}')\"
$command = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $connection)
}
$connection.Close()
}
Variable
Traitement
Connect_Mysql
[/code:1]
Votre aide serait la bienvenue<br><br>Message édité par: tcottin, à: 6/02/13 17:08
Je fait un Script qui lit un fichier texte et qui envoie ligne après ligne dans une variable.
Cette variable va être enregistrer dans une BDD.
Le problème se situe au niveau de l'insertion dans la BDD.
Il n'y a rien qui s'incrémente.
[code:1]
Function Variable {
[void][system.reflection.Assembly]::LoadWithPartialName(\"MySql.Data\"«»)
#cd \"\\10.100.2.47\c$\Script\log imprimante\\"
cd \"U:\Script\log imprimante\"
}
Function Traitement {
Get-Content 0INFO*.log | Select-String -Pattern \"0INFO\" > temp.txt
Get-Content temp.txt| %{ $_.Split(';')[1];} > PCimp.txt
Get-Content temp.txt| %{ $_.Split(';')[2];} > IPimp.txt
Get-Content temp.txt| %{ $_.Split(';')[3];} > Dateimp.txt
rm temp.txt
}
Function Connect_Mysql {
$port = \"3306\"
$srv = \"127.0.0.1\"
$user = \"root\"
$mdp = \"\"
$bdd = \"cds\"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = \"server=$srv;port=$port;uid=$user;pwd=$mdp;database=$bdd;Pooling=False\"
$connection.Open()
for ($i = 1;$i -lt 42; $i++){ (Get-Content PCimp.txt -totalcount $i)[-1] > temp.txt
$name = Get-Content temp.txt
$query = \"INSERT INTO cds (Poste,IP,Date) VALUES($name,'{1}','{2}')\"
$command = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $connection)
}
$connection.Close()
}
Variable
Traitement
Connect_Mysql
[/code:1]
Votre aide serait la bienvenue<br><br>Message édité par: tcottin, à: 6/02/13 17:08
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 13 ans 3 mois #13905
par Philippe
Réponse de Philippe sur le sujet Re:Ecrire dans une BDD
salut tcottin
meme si l'usage de fichier texte comme variable temporaire me semble inutile dans cette script, il me semble que tu a une erreur de conception dans la fonction connect_mysql a la ligne :
[code:1]for ($i = 1;$i -lt 42; $i++){ (Get-Content PCimp.txt -totalcount $i)[-1] > temp.txt[/code:1]
-totalCount <long> : Spécifie le nombre de lignes de contenu récupérées.
donc a chaque passage (boucle) get-content lit depuis le debut du fichier avec une ligne supplementaire. mais je n'ai jamais utiliser cette option je peut me tromper. dans le cas contraire l'insert va vite te poser un probleme.
sinon je suppose que ta ligne insert
tu la tester avec des valeur de test ex. :
[code:1] $query = \"INSERT INTO cds (Poste,IP,Date) VALUES('testdenom','192.168.1.1','2055-12-mai')\"[/code:1]
quel est le format du champs date dans ta bdd, il y a souvant des probleme de convertion a ce niveau
on est d'accord le champ ip dans ta base est du text pas du numerique ?
sinon a tu un message d'erreur ?
ta base reste vide (pas de nouvelle ligne/enregistrement)ou elle ce rempli de ligne vide ?
meme si l'usage de fichier texte comme variable temporaire me semble inutile dans cette script, il me semble que tu a une erreur de conception dans la fonction connect_mysql a la ligne :
[code:1]for ($i = 1;$i -lt 42; $i++){ (Get-Content PCimp.txt -totalcount $i)[-1] > temp.txt[/code:1]
-totalCount <long> : Spécifie le nombre de lignes de contenu récupérées.
donc a chaque passage (boucle) get-content lit depuis le debut du fichier avec une ligne supplementaire. mais je n'ai jamais utiliser cette option je peut me tromper. dans le cas contraire l'insert va vite te poser un probleme.
sinon je suppose que ta ligne insert
tu la tester avec des valeur de test ex. :
[code:1] $query = \"INSERT INTO cds (Poste,IP,Date) VALUES('testdenom','192.168.1.1','2055-12-mai')\"[/code:1]
quel est le format du champs date dans ta bdd, il y a souvant des probleme de convertion a ce niveau
on est d'accord le champ ip dans ta base est du text pas du numerique ?
sinon a tu un message d'erreur ?
ta base reste vide (pas de nouvelle ligne/enregistrement)ou elle ce rempli de ligne vide ?
Connexion ou Créer un compte pour participer à la conversation.
- COTTIN
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 84
- Remerciements reçus 0
il y a 13 ans 3 mois #13971
par COTTIN
Réponse de COTTIN sur le sujet Re:Ecrire dans une BDD
pour info voici mon code résolue, fonctionne très bien
[code:1]
Function Variable {
[void][system.reflection.Assembly]::LoadWithPartialName(\"MySql.Data\"«»)
cd \"\\10.100.0.160\f$\LogImprimante\\"
#cd \"U:\Script\log imprimante\"
$comp = 0
}
Function Traitement {
cd \"\\10.100.0.160\f$\LogImprimante\\"
Get-Content 0INFO*.log | Select-String -Pattern \"0INFO\" > temp.txt
Get-Content temp.txt| %{ $_.Split(';')[1];} > PCimp.txt
Get-Content temp.txt| %{ $_.Split(';')[2];} > IPimp.txt
Get-Content temp.txt| %{ $_.Split(';')[3];} > Dateimp.txt
rm temp.txt
}
Function Connect_Mysql {
cd \"\\10.100.2.47\c$\\"
$port = \"3306\"
$srv = \"127.0.0.1\"
$user = \"root\"
$mdp = \"\"
$bdd = \"cds\"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection(\"server=$srv;port=$port;uid=$user;pwd=$mdp;database=$bdd;Pooling=False\"«»)
$connection.Open()
cd \"\\10.100.0.160\f$\LogImprimante\\"
$nbline = Get-Content PCimp.txt
$nblines = $nbline.Length
cd \"\\10.100.2.47\c$\\"
for ($i = 0;$i -lt $nbline.Length; $i++){
cd \"\\10.100.0.160\f$\LogImprimante\\"
$name = Get-Content -Path PCimp.txt | where { $_ -ne \"$null\" } | Select-Object -Index $i
$IP = Get-Content -Path IPimp.txt | where { $_ -ne \"$null\" } | Select-Object -Index $i
$Date = Get-Content -Path Dateimp.txt | where { $_ -ne \"$null\" } | Select-Object -Index $i
cd \"\\10.100.2.47\c$\\"
$comp = $comp + 1
$query = @\"
INSERT INTO `cds`(Poste, IP, Date) VALUES (\"$name\",\"$IP\",\"$Date\"«»)
\"@
$req = New-Object Mysql.Data.MysqlClient.MySqlCommand($query,$connection)
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req)
$dataSet = New-Object System.Data.DataSet
$dataAdapter.Fill($dataSet,\"cds\"«»)
}
$connection.Close()
}
Function Purge {
#rm *.txt
#rm *.log
}
Variable
Traitement
Connect_Mysql
Purge[/code:1]
[code:1]
Function Variable {
[void][system.reflection.Assembly]::LoadWithPartialName(\"MySql.Data\"«»)
cd \"\\10.100.0.160\f$\LogImprimante\\"
#cd \"U:\Script\log imprimante\"
$comp = 0
}
Function Traitement {
cd \"\\10.100.0.160\f$\LogImprimante\\"
Get-Content 0INFO*.log | Select-String -Pattern \"0INFO\" > temp.txt
Get-Content temp.txt| %{ $_.Split(';')[1];} > PCimp.txt
Get-Content temp.txt| %{ $_.Split(';')[2];} > IPimp.txt
Get-Content temp.txt| %{ $_.Split(';')[3];} > Dateimp.txt
rm temp.txt
}
Function Connect_Mysql {
cd \"\\10.100.2.47\c$\\"
$port = \"3306\"
$srv = \"127.0.0.1\"
$user = \"root\"
$mdp = \"\"
$bdd = \"cds\"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection(\"server=$srv;port=$port;uid=$user;pwd=$mdp;database=$bdd;Pooling=False\"«»)
$connection.Open()
cd \"\\10.100.0.160\f$\LogImprimante\\"
$nbline = Get-Content PCimp.txt
$nblines = $nbline.Length
cd \"\\10.100.2.47\c$\\"
for ($i = 0;$i -lt $nbline.Length; $i++){
cd \"\\10.100.0.160\f$\LogImprimante\\"
$name = Get-Content -Path PCimp.txt | where { $_ -ne \"$null\" } | Select-Object -Index $i
$IP = Get-Content -Path IPimp.txt | where { $_ -ne \"$null\" } | Select-Object -Index $i
$Date = Get-Content -Path Dateimp.txt | where { $_ -ne \"$null\" } | Select-Object -Index $i
cd \"\\10.100.2.47\c$\\"
$comp = $comp + 1
$query = @\"
INSERT INTO `cds`(Poste, IP, Date) VALUES (\"$name\",\"$IP\",\"$Date\"«»)
\"@
$req = New-Object Mysql.Data.MysqlClient.MySqlCommand($query,$connection)
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req)
$dataSet = New-Object System.Data.DataSet
$dataAdapter.Fill($dataSet,\"cds\"«»)
}
$connection.Close()
}
Function Purge {
#rm *.txt
#rm *.log
}
Variable
Traitement
Connect_Mysql
Purge[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.034 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Ecrire dans une BDD