Question Découpage dichier CSV

Plus d'informations
il y a 12 ans 11 mois #14609 par Romain F.
Découpage dichier CSV a été créé par Romain F.
Bonjour a tous

Je ne suis pas spécialement débutant , mais j'ai pas vraiment écrit beaucoup de script powershell jusque là.

Or aujourd'hui je dois faire un script qui découpe un fichier CSV, je m'explique.

Au boulot j'ai un programme qui met a jour un matos qui me sors un fichier CSV qui a ce genre d'info :
172.19.2XX.XX,XXXX,ABC101,\"3.0.22\",HK11111,\"2.0\",\"CD-0029\"
172.19.2XX.XX,,,,HK11111,,,,,P2,\"Profile 2 - Video 1\",\"videoEncode, \"
172.19.2XX.XX,,,,HK11111,,,,,P2,VS1,\"Source 1 - Plain Video 1\",VCH0
172.19.2XX.XX,,,,HK11111,,,,,P2,VE2,\"Encoder 2 - H.264\",H_264,=12/1,CBR,1800,100.0,3,,,,,232.19.XX.XX,5008,true

et donc j'aimerais que c'est information n'apparaissent pas dans la même cellule de mon fichier CSV, mais qu'elles soient toutes séparé pour que je puisse mieux les utiliser dans mon code après ...

donc j'ai écrit un truc comme ça :

$header =\"Adresse IP\",\"Constructeur\",\"Version SW\",\"Num Serie\",\"Version HW\",\"Nom Codeur\",\"Profile\",\"VS-VE\",\"Source\",\"Résolution\",\"GOP\",\"Rate type\",\"Bitrate\",\"je sais plus\",\"pareil\"
$header
$CSV = Import-Csv -Path \".\Resultats.csv\" -Header $header # import-CSV genere un tableau d'objet / la premiere ligne est un header
foreach ($_ in $CSV)
{
echo \"
\"
$_
$split = $_ -split ','
$split #afficher les données découpé
echo \"
\"
}

J'ai essayer \"-delimiter ',' \" sans succès , et lors de mon split j'ai \"@{\" et \"}\" qui apparaisent en début et fin mais je n'en ai pas besoin, meme si je pense savoir pourquoi il apparait, est ce possible de l'enlevé ?

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 11 mois #14610 par SiSMik
Réponse de SiSMik sur le sujet Re:Découpage dichier CSV
Bonjour tout seul ! :D

Je pense que c'est un problème de compréhension de l'utilisation du foreach.

[code:1]foreach ($_ in $CSV) [/code:1]
$_ est utilisé pour récupérer un objet \"pipé\" donc il n'a pas ça place ici

[code:1]foreach ($line in $CSV)[/code:1] serait plus approprié.

J'aurais fait quelque chose dans le style.
[code:1]
# S'assurer que les headers sont identiques à ceux dans le *.csv
# Eviter aussi les espaces dans les headers
$header =\"Adresse IP\",\"Constructeur\",\"Version SW\",\"Num Serie\",\"Version HW\",\"Nom Codeur\",\"Profile\",\"VS-VE\",\"Source\",\"Résolution\",\"GOP\",\"Rate type\",\"Bitrate\",\"je sais plus\",\"pareil\"
Import-Csv -Path \".Resultats.csv\" -Header $header -Delimiter \",\" | Foreach {
#On affiche une ligne du csv en tant qu'objet
# Le split n'est pas nécessaire car ce n'est pas du texte
# $_.Constructeur par exemple pour retrouver les propriétés de l'objet.
$_
}
[/code:1]

@+

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 11 mois #14613 par Romain F.
Réponse de Romain F. sur le sujet Re:Découpage fichier CSV
Ok merci beaucoup , mais je n'arrive toujours pas a découpé les lignes du fichier CSV pour les placer au bon endroit ...

Le mieux pour cela serait il de faire un split de la ligne , stoquer chaques donnée dans une variable temporaire puis les réintroduire dans le foreach avec un compteur

un truc du genre : ( mon code n'est pas forcement bon)

[code:1]$header =\"Adresse IP\",\"Constructeur\",\"Version SW\",\"Num Serie\",\"Version HW\",\"Nom Codeur\",\"Profile\",\"VS-VE\",\"Source\",\"Résolution\",\"GOP\",\"Rate type\",\"Bitrate\",\"je sais plus\",\"pareil\"
$header
$CSV = Import-Csv -Path \".\Resultats.csv\" -Header $header -delimiter \",\" # import-CSV genere un tableau d'objet / la premiere ligne est un header

$CSV2 = \".\Resultats2.csv\"

foreach ($line in $CSV)
{
$_
$split = $line -split ','
$split
for ($i=0 ;$i –le ($line.Length-1) ;$i++)
{
Write-output $split[$i] \".\Resultats2.csv\"
}

}
[/code:1]<br><br>Message édité par: Ro_m_1, à: 19/04/13 15:11

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 11 mois #14614 par Philippe
Réponse de Philippe sur le sujet Re:Découpage fichier CSV
salut rom 1

apres ton import, peut tu taper ceci
[code:1]$csv |Get-Member[/code:1]
et nous confirmer que tu a bien cela :

TypeName: System.Management.Automation.PSCustomObject

Name MemberType Definition
----



Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Adresse IP NoteProperty System.String Adresse IP=172.19.2XX.XX
Bitrate NoteProperty Bitrate=null
Constructeur NoteProperty System.String Constructeur=XXXX
GOP NoteProperty GOP=null
je sais plus NoteProperty je sais plus=null
Nom Codeur NoteProperty System.String Nom Codeur=2.0
Num Serie NoteProperty System.String Num Serie=3.0.22
pareil NoteProperty pareil=null
Profile NoteProperty System.String Profile=CD-0029
Rate type NoteProperty Rate type=null
Résolution NoteProperty Résolution=null
Source NoteProperty Source=null
Version HW NoteProperty System.String Version HW=HK11111
Version SW NoteProperty System.String Version SW=ABC101
VS-VE NoteProperty VS-VE=null


si c'est bien le cas chaque element est accessible comme ceci :

[code:1]foreach ($line in $CSV)
{
$line.Constructeur
$line.\&quot;Adresse IP\&quot;
}[/code:1]
ou comme cela
[code:1]$CSV |Format-Table[/code:1]

pour info le code de benduru marche nikel avec tes donnees en exemple<br><br>Message édité par: 6ratgus, à: 19/04/13 15:34

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 11 mois #14616 par Romain F.
Réponse de Romain F. sur le sujet Re:Découpage fichier CSV
Et bien non malheureusement ...

J'obtiens cela :

[code:1]
Name MemberType Definition
----

Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Adresse IP NoteProperty System.String Adresse IP=172.19.202.11,Teleste,MPH101,\&quot;3.0.22\&quot;,HK00431135,\&quot;2.0\&quot;,\&quot;CD-0029\&quot;
Bitrate NoteProperty Bitrate=null
Constructeur NoteProperty Constructeur=null
GOP NoteProperty GOP=null
je sais plus NoteProperty je sais plus=null
Nom Codeur NoteProperty Nom Codeur=null
Num Serie NoteProperty Num Serie=null
pareil NoteProperty pareil=null
Profile NoteProperty Profile=null
Rate type NoteProperty Rate type=null
Résolution NoteProperty Résolution=null
Source NoteProperty Source=null
Version HW NoteProperty Version HW=null
Version SW NoteProperty Version SW=null
VS-VE NoteProperty VS-VE=null[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 11 mois #14617 par Philippe
Réponse de Philippe sur le sujet Re:Découpage fichier CSV
la j'avoue je sais pas :blink:

benduru si ta une idee du probleme sur l'import !
le delimiteur ne marche pas :(

tu peut nous donner un extrait de ton fichier csv pour y voir plus clair (peut etre) !

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.048 secondes
Propulsé par Kunena