0

解決策を見つけるためにあなたのサポートが必要です。

テキスト ファイルにエクスポートする必要があるストアド プロシージャのセットが 10 個あります。10 個のプロシージャはすべて同じ列セットを返します (呼び出しパラメーターのみが異なります)。

解決方法がわかりません。

ストアド プロシージャの出力からタブ区切りのテキスト ファイルにデータをエクスポートする方法を教えてください。

また、可能であればSSISパッケージでも教えてください。

ありがとう

4

1 に答える 1

3

ここで簡単な解決策。

各 SP について:

  • Management Studio で SP を実行する
  • 結果ペインの下で、右クリックして [名前を付けて結果を保存...] を選択します。
  • [ファイルの種類] で [CSV] を選択します

最後に、各ファイルをメモ帳で開き、結果を単純に連結します。

編集

たとえば、ストアド プロシージャが 10 個ある場合は、次のようにします。

  • 出力用の一時テーブルを作成する

    CREATE TABLE #output (...)
    
  • 10INSERT...EXECを使用して一時テーブルを埋めます

    INSERT INTO #output EXEC MySP1 ...
    GO
    INSERT INTO #output EXEC MySP2 ...
    GO
    INSERT INTO #output EXEC MySP3 ...
    GO
    ...
    INSERT INTO #output EXEC MySP10 ...
    GO
    
  • クエリを実行SELECT * FROM #output

  • 結果ペインの下で、右クリックして [名前を付けて結果を保存...] を選択します。
  • [ファイルの種類] で [CSV] を選択します

編集2

出力一時テーブルにデータの取得元 (SP) の情報が必要な場合は、INSERT...EXEC ステートメントを少し制御するために、SP に別の列を追加できます。

それを行いたいが SP 出力を制御できない場合、1 つの方法は のデフォルト値を制御することであり#output、別の方法は中間結果用に別の一時テーブルを追加することです。私は2番目のものを使用します:

  • たとえば、テーブル名を識別子として、出力用の一時テーブルを作成します。

    CREATE TABLE #output (spname sysname, ...)
    
  • 中間結果用の一時テーブルを作成する

    CREATE TABLE #temp (...)
    
  • 10INSERT...EXECを使用して中間を埋めてからテーブルを出力します

    TRUNCATE TABLE #temp
    INSERT INTO #temp EXEC MySP1 ...
    GO
    INSERT INTO #output
    SELECT spname = 'MySP1', * FROM #temp
    GO
    
    TRUNCATE TABLE #temp
    INSERT INTO #temp EXEC MySP2 ...
    GO
    INSERT INTO #output
    SELECT spname = 'MySP2', * FROM #temp
    GO
    ...
    
  • クエリを実行SELECT * FROM #output

  • 結果ペインの下で、右クリックして [名前を付けて結果を保存...] を選択します。
  • [ファイルの種類] で [CSV] を選択します
于 2013-08-06T11:08:57.000 に答える