4
4

More than 3 years have passed since last update.

bcpユーティリティを使用したデータのインポート/エクスポートについて

Last updated at Posted at 2020-08-07

はじめに

ローカルのSQLServerにデータをインポート/エクスポートする際に使用したbcpユーティリティについて、備忘のためにまとめています。

bcpユーティリティとは?

Microsoft SQL Serverの一括コピープログラム(BCP)APIを使用するコマンドラインツールのことです。
(参考) https://docs.microsoft.com/ja-jp/sql/tools/bcp-utility?view=sql-server-ver15

次のタスクが実行可能です。

  • SQLServerテーブルからデータファイルへのデータの一括エクスポート
  • クエリからのデータの一括エクスポート
  • データファイルからSQLServerテーブルへのデータの一括インポート
  • フォーマットファイルの生成

使用例 (約15000件のテストデータをインポート/エクスポート)

インポート

bcp User in ~/Desktop/users.dat -N -U "user" -P "password" -S 127.0.0.1 -b 1000

bcp テーブル名またはクエリ in/out/queryout/format 〜が基本の書き方となります。
テーブル名/クエリの後にどのタスクを実行するかを指定します。

実行タスク 説明
in data_file ファイルからデータベース テーブルまたはビューへのコピーを行う。
out data_file データベース テーブルまたはビューからファイルへのコピーを行う。
queryout data_file クエリからのコピーを行う。データをクエリから一括コピーする場合にのみ指定する必要がある。
format nul 指定されたオプション(-n、-c、-w、-N) と、テーブルやビューの区切り記号に基づいてフォーマットファイルを作成する。フォーマットファイルの作成についてはこちらをご参照ください。

その他のオプションは以下の通りです。

オプション 説明
-N 文字以外のデータについてはデータベースのネイティブなデータ型を使用し、文字データについては Unicode 文字を使用して、一括コピー操作を実行する。フィールドごとにファイルストレージ型を確認するプロンプトが表示されず、よしなに型を判断してくれる。
-U login_id SQLServerへの接続に使用されるログインIDを指定する。
-P password ログインIDのパスワードを指定する。
-S server_name サーバー名を指定する。
-b batch_size 何行分のデータを1トランザクションとして扱うかを指定する。今回は1000を指定。

実行した結果、962ms.でインポートが完了しました。
in.png

エクスポート

bcp "select * from User" queryout ~/Desktop/users.dat -N -U "user" -P "password" -S 127.0.0.1

今回はqueryoutを指定してクエリを用いたエクスポートを実行しました。
実行した結果、84ms.でエクスポートが完了しました。
queryout.png

参考リンク

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4