我有一个过程,我试图完全自动化,并遇到了绊脚石。
该过程运行许多SQL查询,然后将这些结果输出到不同的命名CSV文件。
我的问题在于,当我导出数据时,我在查询数据集时没有返回任何结果(我必须这样做才能满足审核员),没有标题数据写入CSV文件。
因此,我需要做的是,如果数据集包含0行,则只需导出包含“客户”,“余额”,“帐户”标题的CSV文件。
如果表中有数据,那么该过程可以像现在一样继续。
我不确定如何实现这一目标......
我目前正在静音是否必须导出数据然后写一个循环来删除包含例如“Client”的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 {
}
有没有人遇到此问题或意识到如何迭代这个问题?
答案 0 :(得分:1)
您能否提供有关您正在处理的数据的更多信息?我了解,如果没有您想要的数据"客户","余额","帐户"。 当存在数据时,它也会在这3列中吗?
如果是这样,这是你的答案:
$DataSet.Tables["Table"] |
Select-Object Client,Balance,Account |
Export-Csv $034CASHOUT -NoTypeInformation
答案 1 :(得分:1)
您可以创建.csv文件并手动添加标题文本。
#include <string>
#include <vector>
#include <memory>
class A
{
public:
A() = default;
};
class B : public virtual A
{
public:
B() = default;
};
class C : public virtual A
{
public:
C() = default;
};
class D : public B, public C
{
public:
D() = default;
};
int main()
{
{ // this crashes
std::vector<std::unique_ptr<C>> v;
std::unique_ptr<D> s1(new D());
v.push_back(std::move(s1));
std::unique_ptr<C> s2(new C());
v.push_back(std::move(s2));
}
{ // this is fine
std::vector<C> v;
D s1;
v.push_back(s1);
C s2;
v.push_back(s2);
}
return 0;
};
另外,我认为您的IF情况可能有点不稳定。你在寻找:
$headerText = ('"Client","Balance","Account"' + "`n")
New-Item $034CASHOUT | Add-Content -value $headerText
所有在一起:
IF($DataSet.Tables["Table"] -isnot $null)
这可能不是最好的方法,但我认为这就是你所描述的。