2009-03-18 8 views
5

J'ai quelques fichiers volumineux au format CSV que je voudrais transformer en objets en utilisant la commande Import-Csv dans Powershell. Les fichiers ne contiennent cependant pas les en-têtes de colonne et ceux-ci doivent être ajoutés avant que j'utilise Import-Csv. Quel est le moyen le plus rapide et le plus efficace d'ajouter ces éléments au fichier? Ajouter un fichier volumineux n'est pas une opération facile ou rapide.Comment pré-accrocher efficacement une ligne à un fichier volumineux dans Powershell

Répondre

6

Cependant, l'import-csv a un argument « en-tête » que vous pouvez utiliser pour spécifier les en-têtes de colonnes, à savoir:

$header = 'Foo', 'Bar', 'Baz' 
import-csv .\myfile.csv -header $header 
+0

Je pense que l'argument -header est uniquement disponible dans PowerShell V2. – aphoria

0

Copiez la chaîne que vous voulez préfixer un nouveau fichier concaténer le reste à ce nouveau fichier.

4

Je suis sûr qu'il existe un moyen de le faire en une ligne, mais cela fonctionnera.

En supposant que vous avez test.csv avec ces contenus:

1,2,3 
4,5,6 
7,8,9 

Ce code PowerShell va créer un nouveau fichier, NewTest.csv, avec les noms de colonnes et ajouter le contenu de test.csv.

Add-Content -path .\NewTest.csv -value "Col1,Col2,Col3" 
$contents = Get-Content .\Test.csv 
Add-Content -path .\NewTest.csv -value $contents 

Je ne peux pas parler à la performance de ce si vous avez un fichier vraiment grand, mais je ne suis pas au courant d'aucune autre façon de le faire.

+2

Pour accélérer un peu les choses, acheminez le contenu de Get-Content vers Add-Content: Get-Content. \ Test.csv | Add-Content -path. \ NewTest.csv – JasonMArcher

+0

Cela a très bien fonctionné pour moi! – tresstylez

0
$largeFile = get-content .\largeFile.txt 
$header = "Col1,Col2,Col3,Col4" 
$headerArray = $header -split ' ' 
$headerArray + $largeFile | out-file largeFileWithHeader.txt 
3

Cette doublure fonctionne bien.

@("Header Text") + (get-content myFile.txt) | set-content myFile.txt 

Explication

  • @("Header Text") crée un tableau avec un seul élément.
  • + (get-content myFile.txt) crée un nouveau tableau avec le contenu des deux.
  • | set-content myFile.txt dirige le résultat vers set-content et l'enregistre dans un fichier.
Questions connexes