Ho alcuni file di grandi dimensioni in formato CSV che vorrei trasformare in oggetti usando il comando Import-Csv
in PowerShell. I file mancano tuttavia le intestazioni di colonna e questi devono essere aggiunti prima di utilizzare Import-Csv
. Qual è il modo più rapido ed efficiente di aggiungere questi al file?Come precaricare in modo efficiente una linea in un file di grandi dimensioni in PowerShell
risposta
La preparazione ad un file di grandi dimensioni non è un'operazione facile o rapida.
Tuttavia, Import-CSV ha un argomento "header" che è possibile utilizzare per specificare le intestazioni delle colonne, vale a dire:
$header = 'Foo', 'Bar', 'Baz'
import-csv .\myfile.csv -header $header
Copiare la stringa da anteporre a un nuovo file poi concatenare il resto a quel nuovo file.
Sono sicuro che c'è un modo per farlo in una riga, ma funzionerà.
si Supponendo che hanno Test.csv con questi contenuti:
1,2,3
4,5,6
7,8,9
Questo codice PowerShell creerà un nuovo file, NewTest.csv, con i nomi delle colonne e aggiungere il contenuto di Test.csv.
Add-Content -path .\NewTest.csv -value "Col1,Col2,Col3"
$contents = Get-Content .\Test.csv
Add-Content -path .\NewTest.csv -value $contents
Non posso parlare per le prestazioni di questo se si dispone di un file di grandi dimensioni davvero, ma non sono a conoscenza di alcun altro modo per fare questo.
Per accelerare un po ', reindirizzare il contenuto Get al contenuto aggiuntivo: Get-Content. \ Test.csv | Aggiungi-contenuto -path. \ NewTest.csv – JasonMArcher
Questo ha funzionato alla grande per me! – tresstylez
$largeFile = get-content .\largeFile.txt
$header = "Col1,Col2,Col3,Col4"
$headerArray = $header -split ' '
$headerArray + $largeFile | out-file largeFileWithHeader.txt
Questo rivestimento funziona perfettamente.
@("Header Text") + (get-content myFile.txt) | set-content myFile.txt
Spiegazione
@("Header Text")
crea una matrice con una sola voce.+ (get-content myFile.txt)
crea una nuova matrice con il contenuto di entrambi.| set-content myFile.txt
pipe il risultato per impostare il contenuto e salva su file.
Penso che l'argomento -header sia disponibile solo in PowerShell V2. – aphoria