こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL ServerでcsvやテキストファイルをインポートできるBULK INSERTについて解説します。
スポンサーリンク
前提条件
この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。
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】テーブルです。
テーブル構造はこのようになっています。
【House】テーブルは、すでに下記のデータが登録されています。
id | name | age |
---|---|---|
aaa1 | 鈴木 | 10 |
BBB1 | 田中 | 68 |
CcC1 | 佐藤 | 32 |
ddd「 | せお | 22 |
eEE@ | クリス | 49 |
fff1 | 藤田 | 100 |
【House】テーブルに対して、以下のファイルをBULK INSERTを行います。
ggg2,高,70
BULK INSERTの実行文は以下の通りです。
BULK INSERT House
FROM 'C:\test\BulkInsertTest.txt'
WITH
(
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
実行結果は以下になります。
無事エラーが起きず、処理されました。
本当に登録されたのか、【House】テーブルを確認します。
設定したファイルの内容で、BULK INSERTができていることが確認できました!
スポンサーリンク
まとめ:テーブルやビューに大量に登録するときはBULK INSERTを使おう!
以上がBULK INSERTの解説です。
テーブルやビューに大量にデータを登録したいとき、ぜひBULK INSERTを使ってみてください!。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
他にもSQL Serverについて記事を書いています。
良ければこちらもご参考ください。
【SQL Server】テーブルの存在チェックするやり方を解説します
【SQL Server】エディタに行番号を表示するやり方を解説します
今までブログで書いたSQL Serverの解説記事のまとめは、こちらをご参考ください。