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
}
这可能不是最好的方法,但我认为这就是您所描述的。
我有一个试图完全自动化的过程,但遇到了绊脚石。
该过程运行多个 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
}
这可能不是最好的方法,但我认为这就是您所描述的。