For example, I had to do some CSV conversions and manipulations, which seemed to be easier done in PowerShell rather than in SQL Server.
1. I will document here a CSV to XML file conversion, which looked to me short and sweet:
Idea inspired from http://blogs.msdn.com/b/powershell/archive/2007/05/29/using-powershell-to-generate-xml-documents.aspx
#create xml file - export_xml $file = "C:\tmp\file.csv" $fileoutxml = "C:\tmp\file.xml" $xml=Import-Csv $file -Delimiter ";" -Header "c1","c2","c3" |
foreach { " <row c1=`"{0}`" c2=`"{1}`" c3=`"{2}`"/>`n" -f
$_.c1,$_.c2,$_.c3 } $xml="<export key_field=`"c1`">`n " + $xml + "</export>" | Out-File $fileoutxml -Encoding UTF8 2. and a replace with Regular Expressions:
here, I am first replacing ; by | and trimming up the data at the same time
and then changing the swapping the order of the two last columns. it is important that $2$1 is surrounded by single quotes - script stops working if we use double quotes for some reason.
(Get-Content $file ) |
Foreach-Object {$_ -replace "(\s*;\s*)", -replace "(?<=^[^|]*\|[^|]*)(\|[^|]*)(\|[^|]*$)", '$2$1'; } |
Set-Content $fileout -Encoding Unicode
Very nice!
ReplyDeleteBut why not use the available cmdlets?
Import-CSV C:\myfile.csv | Export-CliXML C:\myfile.xml
thanks for the suggestion! I think I had the oldest version of PowerShell on the server and Export-CliXML was not yet available...
Delete