Question
Import--CSV tronque
- Yannick
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 2 ans 9 mois #31048
par Yannick
Import--CSV tronque a été créé par Yannick
Bonjour,
j'ai 2 fichiers générés par requete SQL que j'importe ensuite dans powershell pour identifier les doublons et récupérer un numéro d'ordre :
$FormatEnumerationLimit =-1
$myinput=get-content 'fichier2.csv'
Import-CSV -delim ";" 'fichier1.csv' | Where{$myinput -match $_.ID} | Select ordre
fichier2 :
ID
M021195962
M021200082
M031512642
M021242122
M062042132
et fichier1 :
ID;ordre
D015005042;1
D025013642;2
D025014692;3
D025017422;4
D025017642;5
D035025502;6
D035025832;7
D035026292;8
M011000102;9
M011000112;10
M011000152;11
M011000302;12
M011000402;13
M011000422;14 jusqu" 25000
Le souci est que le résultat s'affiche toujours sur 2 chiffres même quand le résultat est 100 ou 12 000 ...
ordre
97
98
99
10 (normalement 102)
10 (normalement 103)
10 (normalement 105)
11 (normalement 114)
..
import-csv conserve la longueur des premiers caractères. Comment lui dire que ordre peut aller jusqu'à 5 voire 6 chiffres?
Merci pour votre aide.
j'ai 2 fichiers générés par requete SQL que j'importe ensuite dans powershell pour identifier les doublons et récupérer un numéro d'ordre :
$FormatEnumerationLimit =-1
$myinput=get-content 'fichier2.csv'
Import-CSV -delim ";" 'fichier1.csv' | Where{$myinput -match $_.ID} | Select ordre
fichier2 :
ID
M021195962
M021200082
M031512642
M021242122
M062042132
et fichier1 :
ID;ordre
D015005042;1
D025013642;2
D025014692;3
D025017422;4
D025017642;5
D035025502;6
D035025832;7
D035026292;8
M011000102;9
M011000112;10
M011000152;11
M011000302;12
M011000402;13
M011000422;14 jusqu" 25000
Le souci est que le résultat s'affiche toujours sur 2 chiffres même quand le résultat est 100 ou 12 000 ...
ordre
97
98
99
10 (normalement 102)
10 (normalement 103)
10 (normalement 105)
11 (normalement 114)
..
import-csv conserve la longueur des premiers caractères. Comment lui dire que ordre peut aller jusqu'à 5 voire 6 chiffres?
Merci pour votre aide.
Connexion ou Créer un compte pour participer à la conversation.
- Yannick
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 2 ans 9 mois #31049
par Yannick
Réponse de Yannick sur le sujet Import--CSV tronque
Je pense m'en sortir en feintant, je sors le fichier1 en ajoutant order by ... desc
Connexion ou Créer un compte pour participer à la conversation.
- Yannick
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 2 ans 9 mois #31055
par Yannick
Réponse de Yannick sur le sujet Import--CSV tronque
Mais une réponse sur ce comportement m'intéresse
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 2 ans 9 mois #31059
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Import--CSV tronque
Salut,
avec ce code je n'arrive pas à reproduire ton pb :La recherche de doublon ne fonctionne car $myinput est transformé en chaine :il manque un foreach qq part (ou ton script d'origine émet des objets parasites dans le pipline...)
Pour la recherche de doublon tu peux utiliser Compare-object ou la classe Hashset.
avec ce code je n'arrive pas à reproduire ton pb :
$file='c:\temp\datas.csv'
$file2='c:\temp\datas2.csv'
@'
ID
M021195962
M021200082
M031512642
M021242122
M062042132
'@ > $file2
@'
ID;ordre
D015005042;1
D025013642;2
D025014692;3
D025017422;4
D025017642;5
D035025502;6
D035025832;7
D035026292;8
M011000102;9
M011000112;10
M011000152;11
M011000302;120
M011000402;1300
M011000422;14000
'@ > $file
$t=import-csv $file -delimiter ';'
$t
$FormatEnumerationLimit =-1
$myinput=get-content $file2
Import-CSV -delim ";" $file| Where{$myinput -match $_.ID} | Select ordre
[Int]10 -match [string]'10'
#True
Pour la recherche de doublon tu peux utiliser Compare-object ou la classe Hashset.
$Datas=import-csv $file -delimiter ';'
$Doublons=import-csv $file2 -delimiter ';'
Compare-Object $datas $doublons -Property 'ID'
Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: Yannick
Connexion ou Créer un compte pour participer à la conversation.
- Yannick
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 2 ans 9 mois #31094
par Yannick
Réponse de Yannick sur le sujet Import--CSV tronque
Bonjour Laurent,
Merci beaucoup pour votre retour.
je teste cela
Yannick
Merci beaucoup pour votre retour.
je teste cela
Yannick
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 9 mois #31109
par ericlm128
Réponse de ericlm128 sur le sujet Import--CSV tronque
Je ferait comme ceci
Fichier1.csv
Fichier2.csv
$csv1 = Import-Csv "fichier1.csv" -Delimiter ";" -Encoding UTF8
$csv2 = Import-CSV "fichier2.csv" -Delimiter ";" -Encoding UTF8
$result = Compare-Object -ReferenceObject $csv1 -DifferenceObject $csv2 -ExcludeDifferent -IncludeEqual -Property ID -PassThru | Select-Object -ExpandProperty ordre
$result
<# Affiche
11
12
#>
Fichier1.csv
ID;ordre
D015005042;1
D025013642;2
D025014692;3
D025017422;4
D025017642;5
D035025502;6
D035025832;7
D035026292;8
M011000102;9
M011000112;10
M011000152;11
M011000302;12
M011000402;13
Fichier2.csv
ID
M021195962
M011000152
M031512642
M011000302
M062042132
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.074 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Import--CSV tronque