2011年2月9日水曜日

SQL Server から CSV データのエクスポート

ハマったのでメモ

単純にテーブルをそのままCSVにエクスポートなら、コマンドプロンプトなりbatファイルなりで
bcpコマンドを叩けば成功した。

参考
bcp ユーティリティ


引数つきのストアドプロシージャの実行結果をエクスポートしようとした時に上手くいかなかった。
また、引数も動的に決定したいのでbcpコマンド自体をストアドに入れてしまって
ジョブで定期実行するなどしたい。

まずはmaster.dbo.xp_cmdshell(master.sys.xp_cmdshell?)を有効にする必要があるので
以下を実行する。

-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

実行結果は以下の通り

構成オプション 'show advanced options' が 0 から 1 に変更されました。RECONFIGURE ステートメントを実行してインストールしてください。
構成オプション 'xp_cmdshell' が 0 から 1 に変更されました。RECONFIGURE ステートメントを実行してインストールしてください。

これで、ストアドプロシージャ内で以下のような感じでbcpコマンドが使えるハズです。

EXECUTE xp_cmdshell 'bcp AdventureWorks2008R2.Sales.Currency2 in Currency.dat -T -c'

EXECUTE xp_cmdshell 'bcp "SELECT Name FROM AdventureWorks2008R2.Sales.Currency" queryout Currency.Name.dat -T -c'

0 件のコメント:

コメントを投稿