【SQL Server】バッチファイルからbcpコマンドを使用して、レコードをエクスポートする

バッチファイルから
 ・bcpコマンドを使用して
 ・レコードをエクスポート
できます!

bcpコマンドよるエクスポート方法は
 ・テーブル名のみを指定して、全レコードを取得
 ・SELECT文を指定して、条件に合致したレコードを取得
の2つがあります。

PR

サンプルプログラムの概要

bcpコマンドを使用して、以下のテーブル「EMPLOYEE」のレコードをcsvファイルへエクスポートします。

エクスポート対象のテーブル
エクスポート対象のテーブル
PR

サンプルプログラム作成

ファイル名

export_record.bat

記載するコード

★「サーバー名」等の接続情報や「出力フォルダ」について
上部に変数として纏めています。環境に合わせて修正してください。

ここではWindows認証を使用してSQL Serverへ接続しています。
SQL Server認証を使用した方法も記載していますが、コメントアウトしています。

「SELECT文を指定して、条件に合致したレコードを取得する」方法は、コメントアウトしています。

@echo off

REM サーバー名(サーバーのPC名\インスタンス名)
set dbServer=localhost\SQLEXPRESS
REM データベース名
set dbName=sampleDB
REM ユーザー名
REM set userName=sampleUser
REM パスワード
REM set password=password

REM 出力フォルダ
set outputFolder=C:\Users\user\Desktop\sqlserver_sample\export\


REM #####################
REM Windows認証の場合
REM #####################

REM ★テーブル名のみを指定して、全レコードを取得する
bcp EMPLOYEE out %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -T -c -t ","

REM ★SELECT文を指定して、条件に合致したレコードを取得する
REM bcp "SELECT TOP(1) * FROM EMPLOYEE" queryout %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -T -c -t ","


REM #####################
REM SQL Server認証の場合
REM #####################

REM ★テーブル名のみを指定して、全レコードを取得する
REM bcp EMPLOYEE out %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -U %userName% -P %password% -c -t ","

REM ★SELECT文を指定して、条件に合致したレコードを取得する
REM bcp "SELECT TOP(1) * FROM EMPLOYEE" queryout %outputFolder%EMPLOYEE.csv -S %dbServer%  -d %dbName% -U %userName% -P %password% -c -t ","

pause
PR

実行

レコードがエクスポートされた旨が表示されました。

コピーを開始しています...

2 行コピーされました。
ネットワーク パケット サイズ (バイト): 4096
クロック タイム (ミリ秒) 合計     : 1      平均 : (2000.00 行/秒)
続行するには何かキーを押してください . . .
PR

結果

エクスポートされたcsvファイルをテキストエディタで開くと、レコードがエクスポートされていることを確認できます。

00001,鈴木一郎,男,営業課
00002,佐藤次郎,男,経理課

 

バックアップ等のためにレコードをエクスポートする場合は、以下の記事の方法でエクスポートしたほうが、利便性が良いと思います。



上記の方法で複数のテーブルのレコードをエクスポートすると、大量のレコードがエクスポートされてストレージが枯渇してしまうかもしれません。
その場合はDB上にバックアップなテーブルを作成したほうが良いと思います。


タイトルとURLをコピーしました