📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 51行目: | 51行目: | ||
<br><br> | <br><br> | ||
== BULK | == 使用例 == | ||
==== カンマ区切りファイルのインポート ==== | |||
* | # CSVファイルの内容 | ||
John,Doe,30,New York | |||
Jane,Smith,25,Los Angeles | |||
<br> | |||
<syntaxhighlight lang="tsql"> | |||
BULK INSERT Employees | |||
FROM 'D:\Data\employees.csv' | |||
WITH | |||
( | |||
FIRSTROW = 2, /* ヘッダー行をスキップ */ | |||
FIELDTERMINATOR = ',', /* フィールド区切り文字 */ | |||
ROWTERMINATOR = '\n', /* 行区切り文字 */ | |||
MAXERRORS = 2, /* 許容するエラーの最大数 */ | |||
ERRORFILE = 'D:\Data\errors.txt' /* エラーログファイル */ | |||
); | |||
</syntaxhighlight> | |||
<br> | |||
==== タブ区切りファイルのインポート (日付フォーマット指定) ==== | |||
# TSVファイルの内容 | |||
OrderID OrderDate CustomerID Amount | |||
1001 2024-01-01 CUST001 1500.50 | |||
<br> | |||
<syntaxhighlight lang="tsql"> | |||
BULK INSERT Orders | |||
FROM 'D:\Data\orders.txt' | |||
WITH | |||
( | |||
DATAFILETYPE = 'char', | |||
FIELDTERMINATOR = '\t', /* タブ区切り */ | |||
ROWTERMINATOR = '\n', | |||
FORMAT = 'CSV', /* CSVフォーマットを使用 */ | |||
DATE_FORMAT = 'yyyy-MM-dd' /* 日付フォーマットを指定 */ | |||
); | |||
</syntaxhighlight> | |||
<br> | |||
==== 固定長フォーマットファイルのインポート ==== | |||
# データ例 (各フィールドが固定長) | |||
ID NAME DEPT | |||
001 JOHN SALES | |||
002 MARY IT | |||
<br> | |||
<syntaxhighlight lang="tsql"> | |||
BULK INSERT Employees | |||
FROM 'D:\Data\employees_fixed.txt' | |||
WITH | |||
( | |||
DATAFILETYPE = 'char', | |||
FORMATFILE = 'D:\Data\format.fmt', /* フォーマットファイルを指定 */ | |||
CODEPAGE = '65001', /* UTF-8エンコーディング */ | |||
KEEPNULLS /* NULL値を保持 */ | |||
); | |||
</syntaxhighlight> | |||
<br> | |||
==== XMLフォーマットファイルを使用したインポート ==== | |||
<syntaxhighlight lang="tsql"> | |||
/* より詳細なデータマッピングが必要な場合 */ | |||
BULK INSERT Products | |||
FROM 'D:\Data\products.txt' | |||
WITH | |||
( | |||
FORMATFILE = 'D:\Data\products_format.xml', | |||
CHECK_CONSTRAINTS, /* 制約チェックを有効化 */ | |||
FIRE_TRIGGERS, /* トリガーを発火 */ | |||
KEEPIDENTITY /* ID列の値を保持 */ | |||
); | |||
</syntaxhighlight> | |||
<br> | |||
==== バッチ処理によるBULK INSERT ==== | |||
<syntaxhighlight lang="tsql"> | |||
/* 大量データを分割してインポートする場合 */ | |||
BULK INSERT LargeTable | |||
FROM 'D:\Data\large_data.csv' | |||
WITH | |||
( | |||
BATCHSIZE = 1000, /* バッチサイズを指定 */ | |||
ROWS_PER_BATCH = 10000, /* バッチあたりの行数 */ | |||
TABLOCK, /* テーブルロックを使用 */ | |||
ORDER (OrderColumn ASC) /* データの順序を指定 */ | |||
); | |||
</syntaxhighlight> | |||
<br> | |||
==== 文字コードに関する使用例 ==== | |||
以下の例では、CSVファイル (カンマ区切り) をインポートしている。<br> | |||
<br> | |||
<syntaxhighlight lang="tsql"> | <syntaxhighlight lang="tsql"> | ||
/* 文字コードがShift-JISの場合 */ | |||
BULK INSERT T_Table | BULK INSERT T_Table | ||
FROM 'D:\UnicodeFile.txt' | FROM 'D:\UnicodeFile.txt' | ||
| 64行目: | 151行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
<syntaxhighlight lang="tsql"> | <syntaxhighlight lang="tsql"> | ||
/* 文字コードがUNICODEの場合 (SQL Server 2014 R2以前) */ | |||
/* ただし、SQL Server 2014 R2以前では、下記のクエリを実行しても UTF-8形式のファイルは取り込めない */ | |||
/* (UTF-8固有の文字が無いUTF-8形式のファイルはインポートできる) */ | |||
BULK INSERT T_Table | BULK INSERT T_Table | ||
FROM 'D:\UnicodeFile.txt' | FROM 'D:\UnicodeFile.txt' | ||
| 77行目: | 164行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
<syntaxhighlight lang="tsql"> | <syntaxhighlight lang="tsql"> | ||
/* 文字コードがUTF-8の場合 (SQL Server 2014 R2以降) */ | |||
/* SQL Server 2014 R2以降では、UTF-8形式のファイルをインポートすることが出来る */ | |||
BULK INSERT T_Table | BULK INSERT T_Table | ||
FROM 'D:\UnicodeFile.txt' | FROM 'D:\UnicodeFile.txt' | ||