如何使用Powershell从多个数据库中查询数据并将所有内容保存到一个CSV文件中?

问题描述

我有多个站点,每个站点都有多个数据库,如下所示。

# Declare parks and databases list
$parkBGT = "AIT","BGT"
$parkBGW = "BGW","WCW"
$parkSPL = "SPL"
$parkSWC = "APC","SWC"

$OuputFile = "C:\csv\"

这是我的SQL函数

# SQL query execution fuction
function ExecuteSqlQuery ($server,$database,$uid,$pwd,$query) {
    $Connection = New-Object System.Data.SQLClient.SQLConnection
    $Connection.ConnectionString = "server='$server';database='$database'; User ID = '$uid'; Password = '$pwd';"
    $Connection.Open()
    $Command = New-Object System.Data.SQLClient.SQLCommand
    $Command.Connection = $Connection
    $Command.CommandText = $query
    $dataTable = New-Object System.Data.DataSet
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
    $SqlAdapter.SelectCommand = $Command
    $SqlAdapter.Fill($dataTable)
    $Connection.Close()
    return $dataTable
}

我有几个foreach语句,用于从每个语句中提取数据,这里有几个。

foreach ($db in $parkBGT)
{
    $serverXStore = "BGTSQL07\MERCHPOS"
    $queryXStore = "SELECT
                            'XStore' as Source,business_date as Date,rtl_loc_id as Store,wkstn_id as Register,cast(round(sum(total),2) as numeric(36,2)) as Sales
                              FROM [XSTORE_$db].[dbo].[trn_trans]
                                where business_date = '2020-08-30'
                                --and wkstn_id = '431'
                                --and rtl_loc_id = '41100'
                            group by business_date,rtl_loc_id,wkstn_id;"
                    $dsXStore = New-Object System.Data.DataTable
                    $dsXStore = ExecuteSqlQuery $serverXStore $databaseXStore $uidXStore $pwdXStore $queryXStore
                    $dsXStore.Tables[0] | Export-Csv "$OuputFile $db.csv" -NoTypeInformation
    
}

foreach ($db in $parkBGW)
{
    $serverXStore = "BGWSQL07\MERCHPOS"
    $queryXStore = "SELECT
                            'XStore' as Source,wkstn_id;"
                    $dsXStore = New-Object System.Data.DataTable
                    $dsXStore = ExecuteSqlQuery $serverXStore $databaseXStore $uidXStore $pwdXStore $queryXStore
                    $dsXStore.Tables[0] | Export-Csv "$OuputFile $db.csv" -NoTypeInformation
    
}

我正在为每个数据库(如AIT.csv,BGT.csv,BGW.csv,WCW.csv等)获取csv文件。我的问题是如何将所有结果保存到一个CSV文件中,而不是每个数据库保存每个结果?谢谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)