web-dev-qa-db-ja.com

SQLビューをCSVファイルにエクスポートする

クエリを介してデータをプルするスクリプトを作成することはできますが、クエリの結果を.csvファイルにエクスポートしてネットワークストレージの場所に保存する方法を理解するのは非常に困難です。技術面!) bcpコマンドやエクスポートウィザードやsqlcmdを使用してさまざまなことを試しましたが、何も動作しません。また、エクスポートを自動化できるようにしたいです。つまり、このエクスポートを毎週作成/実行するエージェントジョブを実行します。元同僚がこれを設定しましたが、機能させることができませんでした。これを実行すると:

USE [DataInsight]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

BEGIN

sqlcmd -S londata01\raisers -d DataInsight -E -s, -W -w 65535 -Q "SET NOCOUNT on; select * from dbo.All_Email_Addresses" -s "," -o "C:\Users\scarsen\Documents\all_emails.csv"

END

ここで、londata01\raisersはサーバー名、datainsight DBおよびall_emailはテーブルをアドレス指定します。私は得る

実行時の「sqlcmd」付近の構文が正しくありません。

SSMSでSQLCMDModeをオンにしましたが、それでもこのエラーが発生します。

これを試しました:

bcp "select * from datainsight.dbo.All_Email_Addresses" queryout 'C:\Users\scarsen.csv' –c –t , –S londata01\raisers –T

しかし、 'queryout'の近くで誤った構文を取得します。

毎週の出力を自動化したいので、エージェントジョブを使用できるので、SSMS内でエクスポートを作成できる必要があります(私はそう思います)

master..xp_cmdshellを使用して思い出せないことも試しましたが、セキュリティ設定が有効になっていない(または同様の)設定ではないというメッセージが表示されました

ウィザードを使用してエクスポートをSSISに保存しようとしましたが、パッケージの保存または変更にはランタイムとデータベースを同じバージョンにする必要があるというメッセージが表示されます。

一言で言えば、私の限られた知識で多くのことを試しましたが、誰かが助けることができるかどうか疑問に思いましたか?

1
Stl

bcpはコマンドラインコマンドユーティリティです。T-SQLコマンドとして呼び出すことはできません。ただし、xp_cmdshellを有効にすると、SQL Serverエージェントジョブ(またはSQL Server Management Studioのクエリウィンドウ)内の次のコードを使用して、コマンドラインから実行できます。

DECLARE @cmd varchar(1000);
SET @cmd = 'sqlcmd -S londata01\raisers -d DataInsight -E -s, -W -w 65535 -Q "SET NOCOUNT on; select * from dbo.All_Email_Addresses" -s "," -o "C:\Users\scarsen\Documents\all_emails.csv"';
EXEC sys.xp_cmdshell @cmd;

SQL Server Management Studio(SSMS)のクエリウィンドウを介して実行する次のT-SQLコマンドを使用して、サーバーでxp_cmdshellを有効にできます。

EXEC sys.sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sys.sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

SQL Serverごとに一度だけ有効にする必要があります。上記の変更を元に戻す場合は、次のコマンドを実行します。

EXEC sys.sp_configure 'xp_cmdshell', 0;
RECONFIGURE;

show advanced options構成設定を元に戻す必要はありません。 xp_cmdshellのようなものを設定させる以外には、何の関係もありませんまったく

3
Max Vernon