エンジニアの将来って?

現在8年目エンジニアがプログラムの解説、ゲームの研究を書く雑記ブログです

【SQL Server】csvやテキストファイルをインポートできるBULK INSERTについて解説します

こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL ServerでcsvやテキストファイルをインポートできるBULK INSERTについて解説します。

スポンサーリンク

 

前提条件

この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

BULK INSERTとは

BULK INSERTとは、csvやテキストファイルをテーブルに一括で登録できるものです。
大量なデータを登録したいときに使うと、とても便利です。

BULK INSERT (Transact-SQL)
適用対象: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse
SQL Server で、ユーザーが指定した形式で、データベース テーブルまたはビューにデータ ファイルをインポートします。

BULK INSERT (Transact-SQL) - SQL Server | Microsoft Docsから引用させて頂きました

BULK INSERTは、↓のように書きます。

BULK INSERT 【テーブルorビュー名】
FROM 【登録するファイルパス】
WITH
(
   【指定したいオプション】
);

赤太字のカッコで囲っている箇所を変更して頂ければOKです。
WITH以下は書かなくても良いです。
何か指定したいオプションがあるならば、指定します。

WITHで指定できるもので、「これだけ覚えれば大体大丈夫!」というものに絞ってご紹介します。
それは

  • DATAFILETYPE
  • FIELDTERMINATOR
  • ROWTERMINATOR

の3つです。
このオプションを解説します。

BULK INSERTのオプションその1:DATAFILETYPE

【DATAFILETYPE】は、読み込むファイルの型を指定することができます。
指定することができるのは、以下の通りです。

DATAFILETYPEに指定できる値 説明
char 文字形式。
デフォルト値。
native ネイティブ (データベース) データ型。
widechar Unicode 文字。
widenative ネイティブ (データベース) データ型。
ただし、データが Unicode として格納される char、varchar、text 列は除く。

BULK INSERTのオプションその2:FIELDTERMINATOR

【FIELDTERMINATOR】は、読み込むファイルの区切り文字を指定することができます。
たとえば

FIELDTERMINATOR = ','

と指定すれば【,】が区切り文字ですし

FIELDTERMINATOR = '\t'

と指定すれば【タブ】が区切り文字です。

BULK INSERTのオプションその3:ROWTERMINATOR

【ROWTERMINATOR】は、読み込むファイルの行の終わりを指定することができます。
たとえば

ROWTERMINATOR = '\n'

と指定すれば改行が行の終わりと設定することができます。
ちなみに、デフォルト値は、【\r\n】が設定されています。

では、次の章で実際に使ってみます!

解説で使うテーブル

BULK INSERTの解説で使うテーブルは、【House】テーブルです。
テーブル構造はこのようになっています。

f:id:Tairax:20200128174212p:plain

【House】テーブルは、すでに下記のデータが登録されています。

f:id:Tairax:20200128174400p:plain

id name age
aaa1 鈴木 10
BBB1 田中 68
CcC1 佐藤 32
ddd「 せお 22
eEE@ クリス 49
fff1 藤田 100

【House】テーブルに対して、以下のファイルをBULK INSERTを行います。

f:id:Tairax:20200128174949p:plain

ggg2,高,70

BULK INSERTの実行文は以下の通りです。

BULK INSERT House
FROM 'C:\test\BulkInsertTest.txt'
WITH
(
   DATAFILETYPE = 'char',
   FIELDTERMINATOR = ',',
   ROWTERMINATOR = '\n'
);

実行結果は以下になります。

f:id:Tairax:20200128175511p:plain

無事エラーが起きず、処理されました。
本当に登録されたのか、【House】テーブルを確認します。

f:id:Tairax:20200128175743p:plain

設定したファイルの内容で、BULK INSERTができていることが確認できました!

 

スポンサーリンク

 

まとめ:テーブルやビューに大量に登録するときはBULK INSERTを使おう!

以上がBULK INSERTの解説です。
テーブルやビューに大量にデータを登録したいとき、ぜひBULK INSERTを使ってみてください!。

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

他にもSQL Serverについて記事を書いています。
良ければこちらもご参考ください。

【SQL Server】テーブルの存在チェックするやり方を解説します

【SQL Server】エディタに行番号を表示するやり方を解説します

 

今までブログで書いたSQL Serverの解説記事のまとめは、こちらをご参考ください。

【SQL Server】ブログで書いた使い方記事のまとめ