Powershell 添加 header 到空白 csv

Powershell add header to blank csv

我有一个试图完全自动化的过程,但遇到了绊脚石。

该过程运行多个 SQL 查询,然后将这些结果输出到不同的命名 CSV 文件。

我的问题在于,当我导出数据(我必须这样做以满足审计员)时,在对数据集的查询中没有返回任何结果,没有 header 数据写入 CSV 文件.

因此我需要做的是,如果数据集包含 0 行,则只需导出包含标题 "Client"、"Balance"、"Account".[=12= 的 CSV 文件]

如果 table 中有数据,则该过程可以像当前一样继续。

我不确定这到底是怎么实现的...

我目前正在考虑是否必须导出数据然后编写一个循环以删除 CSV 中包含例如 "Client" 然后 re-import CSV 添加列的任何行我想要的标题并再次导出。因为这很乱,理想情况下我想远离这个..

代码是

$SqlCmd.CommandTimeout=$timeout;
$SqlCMD.CommandText = 4CASHQUERY;
$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 4CASHOUT -NoTypeInformation 
echo "CL2 Exported"


}
else {



}

有没有人以前遇到过这个问题或知道如何解决这个问题?

能否提供有关您正在处理的数据的更多信息?我了解如果没有您想要的数据"Client"、"Balance"、"Account"。 当有数据存在时,它也会在这 3 列中吗?

如果是,这就是你的答案:

$DataSet.Tables["Table"] |
Select-Object Client,Balance,Account |   
Export-Csv 4CASHOUT -NoTypeInformation 

您可以创建一个 .csv 文件并手动添加 header 文本。

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

此外,我认为您的 IF 条件可能有点不稳定。您在寻找:

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

总计:

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

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

}
else {

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

}

这可能不是最好的方法,但我认为这就是您所描述的。