2012-01-16 10 views
0

.sqlファイルを含むフォルダがあります。クエリごとに1つのファイル。私はすべてのクエリ/ SQLファイルを実行し、それらをcsvとして保存したいと思います。SQL Server 2008スクリプトでフォルダを実行する方法

私の環境では無効になっているwindows cliを使用せずに自動化する方法はありますか?私はSQL Server Management Studioを持っています。

答えて

2

VB.NETコンソールアプリケーションを作成します。

問題のフォルダから.SQLで終わるファイルのリストを生成します。個々のSQLに各ファイルの内容

ロード

は、データセットに結果を格納し、それぞれのSQLコマンドを実行するコマンド。各データセットのテーブルごとに

、各.csvファイルのために新しい.csvファイル

を作成するには、データテーブル内の各セルを反復処理する必要がある、との.csvファイルのためのエスケープ適切な活用していきます。

3

ビジネスインテリジェンス開発スタジオ(BIDS)がインストールされている場合は、SSISを使用してこのタスクにアプローチします。

まず、SQLファイルを含むフォルダを指す「Foreachループコンテナ」を作成し、変数を使用して各ファイル名を取得します。

次に、フラットファイル接続を作成し、 'Connection String'プロパティをファイルの場所を含む変数に設定します。

次に、 'Execute SQL Task'コンポーネントを使用して 'SQLSourceType'を 'File Connection'に設定し、 'FileConnection'を前の手順で作成したものに設定します。

最後に、データが返される方法に応じて、結果セットが小さい場合、行または単一の列のみの場合、結果を変数に保存し、 'データフロー'タスクで「派生列」コンポーネントを作成し、その変数の内容をCSVファイルにエクスポートします。また、データセットが大きい場合は、結果をテンポラリテーブルにダンプし、「OLE DB Source」と「OLE DB Destination」を使用して、結果セット全体をCSVに直接プッシュすることもできます。

このアプローチは、リモートマシンまたはサーバー自体から実行できるという利点があります。また、SQLエージェントジョブを使用してその実行を自動化することもできます。

+0

私はこのための畳み込まれていない解決策はないと思います。良い答え –

+0

お返事いただきありがとうございます。私はビジネス・オブジェクトの非常に古いコピーを見つけ出し、問題を解決しました。すべての問合せを一度に実行し、複数のExcelファイルとして保存できます。この場合、csvを別々にしてもよいでしょう。 – Lennart

0

スクリプトフォルダ内の各ファイルに対して、sqlcmdまたはbcpコマンドと組み合わせて 'for'を使用します。

関連する問題