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'
これは、SQLではなくSSMSアプリで行います。ツールバーで選択
クエリ->結果の宛先->ファイルの結果
別の方法は、osqlを使用したコマンドラインからです。
OSQL -S SERVERNAME -E -i thequeryfile.sql -o youroutputfile.txt
これはBATファイルから使用でき、Windowsユーザーが認証のためにスケジュールできます。
bcpユーティリティ を使用できます。
結果セットをTransact-SQLステートメントからデータファイルにコピーするには、queryoutオプションを使用します。次の例では、クエリの結果をContacts.txtデータファイルにコピーします。この例では、Windows認証を使用しており、bcpコマンドを実行しているサーバーインスタンスへの信頼できる接続があることを前提としています。 Windowsコマンドプロンプトで、次のように入力します。
bcp "<your query here>" queryout Contacts.txt -c -T
SQL Agentジョブでオペレーティングシステムコマンドとして直接呼び出すことにより、BCPを使用できます。
Windows Powershellを使用してクエリを実行し、テキストファイルに出力できます。
Invoke-Sqlcmd -Query "Select * from database" -ServerInstance "Servername\SQL2008" -Database "DbName"> c:\ Users\outputFileName.txt
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は必要に応じてストアドプロシージャを実行することもできます。繰り返しますが、注意してください。一時テーブルは実行前に作成する必要があります。作成しない場合は、テーブル変数の使用を検討する必要があります。