SQLServerクエリ出力から列ヘッダーを削除したい。検索しましたが、解決策が見つかりませんでした。クエリがあります。
select cc.DepartmentID , cc.Name from HumanResources.Department cc
このクエリを実行すると、次のような出力が得られます。
ID Name
12 Document Control
1 Engineering
16 Executive
14 Facilities and Maintenance
10 Finance
9 Human Resources
SQL Serverの出力からIDと名前(列ヘッダー)を削除したい。
このクエリをスクリプトで実行して、csvファイルを生成します。
編集:
スクリプトでクエリを実行すると、出力としてcsvファイルが取得され、次のようになります。
#TYPE System.Data.DataRow
ID Name
更新:
PowerShellスクリプトを配置しています。
$Database = "temp"
$Server = "localhost"
$AttachmentPath = "output.csv"
# Connect to SQL and query data, extract data to SQL Adapter
$SqlQuery = "select cc.DepartmentID , cc.Name from HumanResources.Department cc"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$nRecs = $SqlAdapter.Fill($DataSet)
$nRecs | Out-Null
#Populate Hash Table
$objTable = $DataSet.Tables[0]
#Export Hash Table to CSV File
$objTable | Export-CSV $AttachmentPath
出力から列ヘッダーを削除したい。
SSMSの[ツール]/[オプション]/[クエリ結果]/[SQLServer]/[テキストへの結果]の下に、[結果セットに列ヘッダーを含める]チェックボックスがあります。結果はグリッドと同様です。
PowerShellを介してsqlcmdを使用している場合は、/ h-1を使用してヘッダーを無効にできます。
この設定は、環境変数SQLCMDHEADERSに対応します。
ヒントとコツ
-1の値を使用して、ヘッダーを印刷しないように指定します。 -1を指定する場合は、パラメーターと設定の間にスペースがあってはなりません。つまり、-h-1です。それ以外の場合、SQLCMDはそれを別個のオプションとして解釈し、失敗します。
例([TechNet]から変更) 1 :
sqlcmd -q /h-1 "SELECT * FROM AdventureWorks2012.Person.Person"
-h-1
でも機能します
Management Studioのクエリウィンドウで、右クリックして[クエリオプション]を選択します。左側のツリーで[結果]> [テキスト]を探し、[結果セットに列ヘッダーを含める]オプションを確認します。 Hamlet Hakobyanは正しいと思います。列ヘッダーを追加するのは、クライアントです。
最後の行を置き換えます$objTable | Export-CSV $AttachmentPath
と
$objTable | ConvertTo-Csv -NoTypeInformation | select -Skip 1 | out-file $AttachmentPath
[名前を付けて保存]オプションを使用すると、属性(列)名は含まれません。