2016-08-24 11 views
1

私は、完全に自動化しようとしているプロセスがあります。Powershellに空白のCSVにヘッダを追加する

プロセスはいくつかのSQLクエリを実行し、これらの結果を異なる名前付きCSVファイルに出力します。

問題があるのは、データをエクスポートするとき(監査人を満足させるために必要な)データセットにクエリで結果が返されない場合、CSVファイルに書き込まれるヘッダデータがないことです。

したがって、「クライアント」、「残高」、「勘定」という見出しを含むCSVファイルをエクスポートするだけで、データセットに0行が含まれている必要があります。

テーブル内にデータがある場合、プロセスは現在と同じように処理を続けることができます。私は何

はわからないがどのようにこれを達成することができ地獄...私は現在、私はデータをエクスポートする必要があり、その後含むCSVから任意の行を削除するループを記述するかどうかをミュートしています

たとえば「クライアント」を選択し、CSVの列見出しを追加して、再度エクスポートします。これは厄介であるため、理想的に私はこれを避けて保管したいと思い..

コードが

$SqlCmd.CommandTimeout=$timeout; 
$SqlCMD.CommandText = $034CASHQUERY; 
$SqlCmd.Connection = $SqlConnection; 

## - Extract Data and build sql data object 

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter; 
$SqlAdapter.SelectCommand = $SqlCmd; 
$DataSet = New-Object System.Data.DataSet; 
$SqlAdapter.Fill($DataSet); 
$DataSetTable = $DataSet.Tables["Table"]; 

IF($DataSet.Tables["Table"]){ 
$isnotnull 
$DataSet.Tables["Table"] | Export-Csv $034CASHOUT -NoTypeInformation 
echo "CL2 Exported" 


} 
else { 



} 

は、誰もが前に、この問題に遭遇したりを繰り返し処理する方法を知っていますか?

答えて

1

.csvファイルを作成し、手動でヘッダーテキストを追加することができます。

$headerText = ('"Client","Balance","Account"' + "`n") 
New-Item $034CASHOUT | Add-Content -value $headerText 

また、あなたのIF条件は少しばかりかもしれないと思います。すべて一緒に

IF($DataSet.Tables["Table"] -isnot $null) 

:あなたが探していることは

IF($DataSet.Tables["Table"] -isnot $null){ 

    $DataSet.Tables["Table"] | Export-Csv $034CASHOUT -NoTypeInformation 
    echo "CL2 Exported" 

} 
else { 

    $headerText = ('"Client","Balance","Account"' + "`n") 
    New-Item $034CASHOUT | Add-Content -value $headerText 

} 

これはおそらくそれを行うための最善の方法はありませんが、私は、これはあなたが説明するものだと思います。

1

処理しているデータに関する詳細情報を提供していただけますか? 「クライアント」、「残高」、「アカウント」のデータがないかどうかはわかります。 データがある場合、これらの3つの列にも表示されますか?

もしそうなら、これはあなたの答えです:

$DataSet.Tables["Table"] | 
Select-Object Client,Balance,Account | 
Export-Csv $034CASHOUT -NoTypeInformation 
関連する問題