Question Import--CSV tronque

Plus d'informations
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.

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

Plus d'informations
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.

Plus d'informations
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.

Plus d'informations
il y a 2 ans 9 mois #31059 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Import--CSV tronque
Salut,
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
La recherche de doublon ne fonctionne car $myinput est transformé en chaine :
[Int]10 -match [string]'10'
#True
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.
$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.

Plus d'informations
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

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

Plus d'informations
il y a 2 ans 9 mois #31109 par ericlm128
Réponse de ericlm128 sur le sujet Import--CSV tronque
Je ferait comme ceci
$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.100 secondes
Propulsé par Kunena