我有一个PowerShell脚本,其中2个export-csv到同一个文件。
但第二个export-csv会覆盖以前的csv文件。
我不想要这个。
对于第二个export-csv,我想将结果写入excel中的B列,所以我想在同一个csv文件中导出,但是要导出到第二列。
$ dataSet.Tables [“Query1”]返回:
COLUMN1
232
$ dataSet.Tables [“Query2”]返回:
COLUMN2
289
怎么做?
有我的剧本:
$mysql = New-Object MySql.Data.MySqlClient.MySqlConnection("server=$serv;port=$port;uid=$user;pwd=$password;database=$db;Pooling=False")
$mysql.Open()
$sqlquery1 = Get-Content "C:\query1.txt"
$sqlquery2 = Get-Content "C:\query2.txt"
$req = New-Object Mysql.Data.MysqlClient.MySqlCommand($sqlquery1,$mysql)
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req)
$dataSet = New-Object System.Data.DataSet
$dataAdapter.Fill($dataSet, "Query1") | Out-Null
$dataSet.Tables["Query1"] | Export-Csv -path "C:\result.csv" -NoTypeInformation
$req2 = New-Object Mysql.Data.MysqlClient.MySqlCommand($sqlquery2,$mysql)
$dataAdapter2 = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req2)
$dataSet = New-Object System.Data.DataSet
$dataAdapter2.Fill($dataSet, "Query2") | Out-Null
$dataSet.Tables["Query2"] | Export-Csv -path "C:\result.csv" -NoTypeInformation
$mysql.Close()
谢谢
答案 0 :(得分:2)
作为@ C.B.提到,-Append
在PowerShell 3.0之前的Export-Csv
中不存在。你在PowerShell 2.0及更早版本中可以做的是这样的:
... | ConvertTo-Csv -NoTypeInformation `
| select -Skip 1 `
| Out-File "C:\result.csv" -Append
答案 1 :(得分:1)
查看Export-CSV
help - -Append
开关就是你所追求的。
答案 2 :(得分:1)
简单回答:你没有。您的查询返回不同的标头。
如果它们的值相同但列名不同,则应将第二个查询的结果转换为与第一个(column1)具有相同属性名的对象,并将两个查询的结果保存在两个查询中完成。
答案 3 :(得分:1)
这就是我如何解决它
$mysql = New-Object MySql.Data.MySqlClient.MySqlConnection("server=$serv;port=$port;uid=$user;pwd=$password;database=$db;Pooling=False")
$mysql.Open()
$sqlquery1 = Get-Content "C:\query1.txt"
$sqlquery2 = Get-Content "C:\query2.txt"
$req = New-Object Mysql.Data.MysqlClient.MySqlCommand($sqlquery1,$mysql)
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req)
$dataSet = New-Object System.Data.DataSet
$dataAdapter.Fill($dataSet, "Query1") | Out-Null
$processrequest1 = ($dataSet1.Tables["Query1"] | Format-Table -HideTableHeaders) | Out-String
$resultrequest1 = [int]$processrequest1
$req2 = New-Object Mysql.Data.MysqlClient.MySqlCommand($sqlquery2,$mysql)
$dataAdapter2 = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req2)
$dataSet = New-Object System.Data.DataSet
$dataAdapter2.Fill($dataSet, "Query2") | Out-Null
$processrequest2 = ($dataSet1.Tables["Query2"] | Format-Table -HideTableHeaders) | Out-String
$resultrequest2 = [int]$processrequest2
$array1 = @()
$array1 += New-Object psobject -Property @{Column1=$resultrequest1;Column2=$resultrequest2}
$array1 | Export-Csv -path "C:\result.csv" -NoTypeInformation -Delimiter ";"
$mysql.Close()