SSMSに結果をCSV * with *ヘッダーとして保存する


13

SQL Server 2008 R2では、結果をCSVとして保存すると、ヘッダーがありません。「ヘッダー付きコピー」でコピーして貼り付けることでこれを回避できますが、ヘッダーを取得してCSVなどに貼り付けることもできますが、これを行うより良い方法はありますか?


実際、これを行うspが理想的かもしれません。
カイルブラント

ヘッダー付きでコピーしてからExcelに貼り付けます!

回答:


22

SSMSでは、いくつかのオプションを変更する必要があります。

ツール-オプション-結果のクエリ-SQLサーバー-グリッド(またはテキスト)への結果-> 結果のコピーまたは保存時に列ヘッダーを含めます

変更された設定は新しいクエリウィンドウに適用されますが、既存のクエリウィンドウには適用されません。


10

SSMSで解決策を探していると明確に述べているが、それが役立つ場合はPowerShellソリューションを提供すると思いました(SPS 2008および2008 R2の内部からSQLPSにアクセスできます)。

SQLPS(またはSQLコマンドレットスナップインを備えた通常のPowerShell)を使用して、次のようなものを実行できます。

Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation

興味があれば、この例を続けていくことができます。


3

PowerShellスクリプトアプローチが気に入ったら、SSMSからPowerShell経由でCSVにエクスポートするスクリプトがあります。これまでのところ、動的SQLスクリプトを使用できるので、任意のテキストを選択でき、SSMSはそれを引数としてスクリプトに渡します。

マイナス面は、現在のウィンドウの接続を渡す賢い方法を見つけていないことだけです。私の現在の回避策は、接続文字列、つまりPROD_DW、PROD_DB、TEST_DWのみが異なるさまざまなツールをセットアップすることです...


1

以下の例のように、すべての結合を結合して、実際の行に対して結合された単一行選択として列ヘッダーを明示的に追加できます。

SELECT 'col1' AS col1... 
UNION ALL 
SELECT T.col1... 
FROM TABLE T

このアプローチの最大の問題は、2番目の選択での文字データ型への強制キャストです。


-1

SSMSはデータエクスポートツールではありません。インポート/エクスポートウィザードまたはBCPを使用します。どちらもデータエクスポートツールとして設計されており、目的の処理を実行します。


それが厳密に当てはまる場合、エクスポートオプションはまったくありません。いずれのソフトウェアでも、機能を追加する場合、適切に機能するようにします。エクスポートに関しては、少なくともSSMS 2008R2はそのテストに失敗します。さらに、SSMSは実際にOPのニーズを満たすことができます。
エリックJ.

2
SSMS アドホックデータエクスポートツールです。たとえば、Excelへのデータの1回限りの抽出が必要な場合は、SSMSが最も迅速で簡単なツールです。エクスポートウィザードの起動にかかる時間で、クエリを実行して結果を保存できます。
グリーンストーンウォーカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.