2013-07-05 4 views
12

Existe-t-il un moyen de créer un objet csv dans powershell à partir d'une variable contenant une chaîne? Au moment où je besoin d'écrire le contenu dans un fichier temporaire puis importer au format CSV et je veux réduire les opérations de disque:Importer-Csv à partir d'une chaîne à partir d'un fichier?

$some_string | Set-Content $temp_file 
$csv_content=Import-Csv $temp_file 

EDIT

@Graham Or, Јοеу merci pour les réponses (je l'ai mis +1 sur tous les deux), mais semble la réponse de Joey est mon test de correct.Here:

$csv_string=" 
`"col1`" ; `"col2`" 
val11 ; val12 
val21 ; val22" 

$csv_content1 = $csv_string | ConvertFrom-CSV 
$csv_content2 = $csv_string | ConvertTo-CSV 
" 
ConvertFrom result:" 
$csv_content1 
" 
ConvertTo result:" 
$csv_content2 

Et le résultat:

ConvertFrom result: 

H1                    
--                    
col1 ; "col2"                 
val11 ; val12                 
val21 ; val22                 

ConvertTo result: 
#TYPE System.String 
"Length" 
"47" 

Répondre

22

Vous pouvez utiliser ConvertFrom-Csv à la place:

$csv_content = $some_string | ConvertFrom-Csv -Delim ';' 

Import-Csv est un peu plus d'une enveloppe autour Get-Content et ConvertFrom-Csv.

2

Mieux encore:

$csv_content1 = ConvertFrom-CSV -delim ';' -Input @" 
"col1"; "col2" 
val11 ; val12 
val21 ; val22 
"@ 
+0

Cette question a déjà été répondu et accepté. Pourriez-vous clarifier pourquoi votre réponse est encore meilleure que celle qui a été acceptée? – Jonas

+1

En fait, en relisant la question j'aurais dû fournir une solution légèrement différente: $ csv_content1 = Convertir-CSV -delim ';' -Input $ some_string L'avantage est qu'il n'a pas besoin de mettre la chaîne sur le pipeline. Cependant, pour l'exemple de texte donné lorsqu'un développeur souhaite que le texte soit incorporé dans le programme lui-même, utiliser l'exemple avec la chaîne @here est meilleur car il ne nécessite pas d'enregistrer le texte dans une variable chaîne et de créer à nouveau pipeline inutilement. – wtgreen

+0

Pourriez-vous s'il vous plaît modifier votre réponse et ajouter cette explication, afin que les gens qui trouvent cette question à l'avenir comprennent pourquoi votre réponse pourrait être meilleure? Spécialement lorsque vous répondez à des questions anciennes, il est généralement préférable de fournir autant de détails que possible. Le site fonctionne mieux si nous aidons en donnant suffisamment d'informations pour que les gens comprennent comment les choses fonctionnent dans nos réponses. Merci. – Jonas

Questions connexes