SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
東南アジアをバックパッカーしながら転職活動をした記録
東南アジアをバックパッカーしながら転職活動をした記録
7年目で初の転職活動 2カ月で内定獲得した記録
7年目で初の転職活動 2カ月で内定獲得した記録
おすすめのプログラミングスクール めざせ就職・年収アップ!
おすすめのプログラミングスクール めざせ就職・年収アップ!
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
ブログ開始3年が経った月収が1万超えてた!
ブログ開始3年が経った月収が1万超えてた!
プログラミング独学・スクール・就職(目次)
プログラミング独学・スクール・就職(目次)
previous arrowprevious arrow
next arrownext arrow
 
Shadow
SQL

SQL BCPコマンド ストアド/SQLを使ってTSV・CSVを出力

SQLでインターフェースファイルを作るときに、ファイルを出力する必要があります。

Transact-SQLを組んでもいいのですが、結構面倒です。

SQLをバッチコマンドで実行する方法を備忘録として残しておきます。

ヘッダと明細の列数が異なるデータを抽出する記事を書いた時にも思っていました。

SQL ヘッダー行と明細(データ)行で項目数が異なるデータを抽出する IFファイルを作るときに、ヘッダー行、明細行、明細行...、ヘッダー行、明細行、明細行...のような作りのことがあります。 ...

デモンストレーションで動かした動画を載せておきます。

SQLserverからファイル出力する書き方

書き方はこんな感じです。

SQLServer認証の場合

bcp “SQL文 or ストアド名” queryout “出力パス” -c -t 区切り文字 -S サーバ名 or IP -U sa -P パスワード

Windows認証の場合

bcp “SQL文 or ストアド名” queryout “出力パス” -c -t 区切り文字 -S サーバ名 or IP –T

BCPで出力してみる

実行結果

以下のコマンドをコマンドプロンプトから実行しました。

bcp "BuyingReport.dbo.GET_BUYING_HEAD_DETAIL" queryout "C:\Csv\GET_BUYING_HEAD_DETAIL.tsv" -c -t \t -S サーバ名 –T

サーバ名は自分のSQLSERVER名を入れて下さい

区切り文字は[tab]です。

実行した結果はこんな感じです。

(補足)ストアドの中身

dbo.GET_BUYING_HEAD_DETAILは以下のようなデータをSELECTするストアドです。

SQL ヘッダー行と明細(データ)行で項目数が異なるデータを抽出する IFファイルを作るときに、ヘッダー行、明細行、明細行...、ヘッダー行、明細行、明細行...のような作りのことがあります。 ...

SQLとバッチの応用

少し応用編です。

インターフェースファイルとして使うには以下がまだ問題です。

・コマンドを毎回打って実行しかできない。

・明細行に不要なタブや区切り文字がある

ということで、定期実行でも使える処理バッチにしてみました。

ファイル名は出力した日時にするようにしています。

実行結果

以下のように不要なタブ(区切り文字)も削除することができました。

ファイル名も出力した日時で出ています。

実行するタイミングはタスクスケジューラで定時実行にすればOKです。

 

ABOUT ME
LooseCarrot
LooseCarrot
ブログ運営をしているLooseCarrotです。 興味のあることにトライして発信していきます! プロフィール

関連している記事