2017-02-07 92 views
0

我需要從Powershell獲取csv文件中的列名稱。從proc獲取Powershell中的列標題如果返回0結果

Powershell調用SQL過程,如果過程返回0行,那麼powershell腳本甚至不會將列名寫入csv文件。

我的代碼如下。

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SqlConnection.ConnectionString = "Server=localhost;Database=LIQ_TradeBustTethysTrader5895;Integrated Security=True" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
$SqlCmd.CommandText = "Execute dbo.Tethys_ArrowGrass_Price_report @loginID = 'ALL', @tableName = 'order_msgs', @firmname = 'ALL', @AssetClass = 'ALL',@OutputBustRecords=0, @ManualOrder=0, @TimeFrom='0:0', @TimeTo='23:59', @ExcludeSimulatedTrades=0, @SingleTable =1" 
$SqlCmd.Connection = $SqlConnection 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet 
$SqlAdapter.Fill($DataSet) 
$SqlConnection.Close() 
$DataSet.Tables[0] |out-null 
$DataSet.Tables[0] | Export-Csv -path "E:\Users\neerajd\Documents\tethystrader-public-dev-general\src\SQL\Misc\out.csv" -NoTypeInformation 
+0

它返回0行還是返回* nothing *?有一個區別。在Management Studio中執行時的結果是什麼樣的 - 您是否看到列標題? –

+0

當我從Management Studio中運行它時,proc會顯示列標題。同時,powershell在cmd窗口中僅顯示「0」。 –

+0

通過簡化開始調試。而不是運行一個sproc,做一個'select foo from bar where ...'並檢查它是否返回需要的東西。如果可行,那麼問題在於存在問題。如果沒有,問題在於別的。 – vonPryz

回答

1

後更新OP的評論,他們希望將頭只導出到CSV,如果結果集是空的。返回

if (-not $DataSet.Tables[0].Rows[0]) { 
    ($DataSet.Tables[0].Columns | Select-Object -ExpandProperty ColumnName) -join ',' | 
    Set-Content -Path "E:\Users\neerajd\Documents\tethystrader-public-dev-general\src\SQL\Misc\out.csv" 
} 

原帖

沒有因爲DataTable是空的。雖然,模式信息被返回。假設您在返回的`DataSet'中只有一個表,下面的PowerShell命令將顯示元數據中返回的列。

$DataSet.Tables[0].Columns | Out-GridView 

...或者,如果你想列一個簡單的CSV列表...

($DataSet.Tables[0].Columns | Select-Object -ExpandProperty ColumnName) -join ',' 

更改[0]到另一個號碼,如果你的數據集返回多個表。

消費系統或應用程序是否期待結果集?

+0

無法在csv中導出列,現在列在Powershell窗口中顯示。要導出csv中的colname,我的代碼是'($ DataSet.Tables [0] .Columns | Select-Object -ExpandProperty ColumnName)-join','| Export-Csv -path「E:\ Users \ neerajd \ Documents \ tethystrader-public-dev-general \ src \ SQL \ Misc \ out.csv」-NoTypeInformation' –