web-dev-qa-db-ja.com

SQL Server:クエリを.txtファイルとしてエクスポート

SQL Serverクエリ結果を.txt形式のフォルダーにエクスポートしようとしています(これは自動ジョブ用です)

MySQLの同等のものはINTO OUTFILEで動作することを知っています。 SQL Server 2008 Management Studioでこれを行う最適な方法を知っている人はいますか?

SELECT DISTINCT RTRIM (s1.SGMNTID) AS 'AccCode',RTRIM (s1.DSCRIPTN) AS 'CodeDesc', CASE
    WHEN  s1.SGMTNUMB = '1' THEN '1' 
    WHEN s1.SGMTNUMB = '2' THEN '2'
    WHEN s1.SGMTNUMB = '3' THEN '110'
    WHEN s1.SGMTNUMB = '4' THEN '4'
    WHEN s1.SGMTNUMB = '5' THEN '120'
    END AS 'AccountType_id',
CASE WHEN s1.SGMTNUMB = '2' 
THEN LEFT(s1.SGMNTID, 2)
ELSE 'DEFAULT'
END AS 'AccGroupName'

 FROM GL40200 s1

UNION 

SELECT  REPLACE ([ACTNUMBR_1]+'-'+ [ACTNUMBR_2]+'-'+ [ACTNUMBR_3]+'-'+[ACTNUMBR_4]+'-'+    [ACTNUMBR_5],' ', '') AS 'AccCode',
 '' AS 'CodeDesc',
 '0' AS 'AccountType_id',
 'Default' AS 'AccGroupName'
FROM GL00100 a

INTO OUTFILE 'C:\Users\srahmani\verian/myfilename.txt'
11
SRahmani

これは、SQLではなくSSMSアプリで行います。ツールバーで選択

クエリ->結果の宛先->ファイルの結果

19
D Stanley

別の方法は、osqlを使用したコマンドラインからです。

OSQL -S SERVERNAME -E -i thequeryfile.sql -o youroutputfile.txt

これはBATファイルから使用でき、Windowsユーザーが認証のためにスケジュールできます。

10
Frank N Stein

bcpユーティリティ を使用できます。

結果セットをTransact-SQLステートメントからデータファイルにコピーするには、queryoutオプションを使用します。次の例では、クエリの結果をContacts.txtデータファイルにコピーします。この例では、Windows認証を使用しており、bcpコマンドを実行しているサーバーインスタンスへの信頼できる接続があることを前提としています。 Windowsコマンドプロンプトで、次のように入力します。

bcp "<your query here>" queryout Contacts.txt -c -T

SQL Agentジョブでオペレーティングシステムコマンドとして直接呼び出すことにより、BCPを使用できます。

5
Mihai Bejenariu

Windows Powershellを使用してクエリを実行し、テキストファイルに出力できます。

Invoke-Sqlcmd -Query "Select * from database" -ServerInstance "Servername\SQL2008" -Database "DbName"> c:\ Users\outputFileName.txt

4
Dan Pickard

BCPユーティリティは.batファイルの形式でも使用できますが、エスケープシーケンス(つまり、引用符 ""はと共に使用する必要があります)および適切なタグに注意してください。

.batの例:

C:
bcp "\"YOUR_SERVER\".dbo.Proc" queryout C:\FilePath.txt -T -c -q
-- Add PAUSE here if you'd like to see the completed batch

-qは、クエリ自体に引用符がある場合に使用する必要があります。

BCPは必要に応じてストアドプロシージャを実行することもできます。繰り返しますが、注意してください。一時テーブルは実行前に作成する必要があります。作成しない場合は、テーブル変数の使用を検討する必要があります。

0
CodeBreaker