Ce face Import-Csv
Import-Csv (alias ipcsv) transformă fiecare rând într-un PSCustomObject: primul rând dă numele proprietăților, iar celelalte rânduri dau valorile. Rezultatul se poate filtra, sorta și grupa imediat, ca orice obiecte.
Toate valorile sunt șiruri de caractere, inclusiv numerele și datele. De aceea, în tabel apar aliniate la stânga, iar comparațiile și sortările numerice cer conversie: [int]$_.Nota, [decimal]$_.Pret.
Separatorul implicit este virgula; pentru fișiere cu ; folosește -Delimiter ';' sau -UseCulture. -Header dă nume coloanelor când fișierul nu are antet. Codificarea implicită în PowerShell 7 este utf8NoBOM; dacă un antet are o coloană goală, PowerShell o numește H1, H2… și afișează un avertisment.
Parametri
| Parametru | Descriere |
|---|---|
-Path |
Fișierul (sau fișierele) CSV citite. |
-Delimiter |
Separatorul de coloane; implicit virgula. |
-UseCulture |
Folosește separatorul de listă al culturii curente. |
-Header |
Numele coloanelor, pentru fișiere fără rând de antet. |
-Encoding |
Codificarea fișierului; implicit utf8NoBOM în PowerShell 7. |
-LiteralPath |
Calea folosită exact cum e scrisă, fără wildcard-uri. |
Ce returnează
Obiecte PSCustomObject, unul pentru fiecare rând, cu valori de tip string.
Exemple
Exemplul 1: Citirea unui fișier CSV
Nota e text, așa că apare aliniată la stânga, nu la dreapta ca un număr.
Set-Content -Path .\note.csv -Value 'Nume,Oras,Nota', 'Ana,Iași,9', 'Mihai,Cluj,7', 'Ioana,Iași,10'
Import-Csv -Path .\note.csv
Ieșire în terminal
Nume Oras Nota
---- ---- ----
Ana Iași 9
Mihai Cluj 7
Ioana Iași 10
Exemplul 2: Sortare corectă a valorilor numerice
Fără conversie, „10” ajunge înaintea lui „7”; cu [int] ordinea este cea numerică.
Set-Content -Path .\note.csv -Value 'Nume,Oras,Nota', 'Ana,Iași,9', 'Mihai,Cluj,7', 'Ioana,Iași,10'
$note = Import-Csv -Path .\note.csv
($note | Sort-Object Nota).Nume -join ', '
($note | Sort-Object { [int]$_.Nota }).Nume -join ', '
Ieșire în terminal
Ioana, Mihai, Ana
Mihai, Ana, Ioana
Exemplul 3: Fișier cu ; și fără antet
Numele coloanelor vin din -Header.
Set-Content -Path .\comenzi.csv -Value 'Ana;Cafea;25', 'Mihai;Ceai;12'
Import-Csv -Path .\comenzi.csv -Delimiter ';' -Header 'Client', 'Produs', 'Pret'
Ieșire în terminal
Client Produs Pret
------ ------ ----
Ana Cafea 25
Mihai Ceai 12
Greșeli frecvente
- Comparații cu numere pe valori text:
Where-Object { $_.Nota -gt 9 }compară șiruri, așa că'10'nu e mai mare decât 9. Convertește:{ [int]$_.Nota -gt 9 }. - Separator greșit: un fișier cu
;citit fără-Delimiter ';'dă obiecte cu o singură proprietate, al cărei nume este tot antetul (de exempluNume;Oras;Nota). -Headerpe un fișier care are deja antet: primul rând devine și el un obiect de date. Folosește-Headerdoar pentru fișiere fără antet.- În Windows PowerShell 5.1, un CSV UTF-8 fără BOM poate apărea cu diacritice stricate; adaugă
-Encoding UTF8.
Comenzi înrudite
Export-Csv: Salvează obiectele într-un fișier CSV: un rând de antet cu numele proprietăților și câte un rând pentru fiecare obiect.Where-Object: Filtrează obiectele din pipeline și le lasă să treacă doar pe cele care îndeplinesc o condiție.Sort-Object: Sortează obiectele după una sau mai multe proprietăți, crescător sau descrescător, opțional doar primele N.Get-Content: Citește conținutul unui fișier ca listă de linii (sau ca un singur șir cu -Raw); poate afișa primele sau ultimele linii și urmări un log.Measure-Object: Numără obiectele și calculează suma, media, minimul și maximul unei proprietăți, sau numără rândurile, cuvintele și caracterele unui text.