Powershell将标题添加到空白csv

时间:2016-08-24 11:24:17

标签: csv powershell export-to-csv

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

该过程运行许多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 {



}

有没有人遇到此问题或意识到如何迭代这个问题?

2 个答案:

答案 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)

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