-3

同じファイルに2つのexport-csvを含むPowerShellスクリプトがあります。

ただし、2番目のexport-csvは、前のcsvファイルを上書きします。

これは欲しくない。

2番目のexport-csvでは、結果をExcelのB列に書き込みたいので、同じcsvファイルで2番目の列にエクスポートします。

$ dataSet.Tables ["Query1"] return:

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()

ありがとうございました

4

4 に答える 4

2

@CBが述べたように、PowerShell3.0より前に-Appendは存在しません。Export-CsvPowerShell 2.0以前でできることは、次のようなものです。

... | ConvertTo-Csv -NoTypeInformation `
    | select -Skip 1 `
    | Out-File "C:\result.csv" -Append
于 2013-03-25T18:21:40.877 に答える
1

Export-CSVヘルプを見てください--Appendスイッチはあなたが求めているものです。

于 2013-03-25T15:31:32.373 に答える
1

簡単な答え:あなたはしません。クエリは異なるヘッダーを返します。

それらが同じ値であるが列名が異なる場合は、2番目のクエリの結果をfirst(column1)と同じプロパティ名のオブジェクトに変換し、両方のクエリの結果を、両方が完了したときにエクスポートする配列に保存する必要があります。

于 2013-03-25T19:00:51.863 に答える
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()
于 2013-03-26T10:06:34.630 に答える