📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 89行目: | 89行目: | ||
GO | GO | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | |||
== エラーハンドリング == | |||
基本的なエラーハンドリングの設定を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="tsql"> | |||
BULK INSERT TargetTable | |||
FROM 'C:\Data\source.txt' | |||
WITH | |||
( | |||
ERRORFILE = 'C:\Errors\error.txt', | |||
MAXERRORS = 10, | |||
FIRSTROW = 2, | |||
FIELDTERMINATOR = ',', | |||
ROWTERMINATOR = '\n' | |||
); | |||
</syntaxhighlight> | |||
<br> | |||
* ERRORFILEオプション | |||
*: エラーが発生した行の詳細情報を指定されたファイルに出力する。 | |||
*: このファイルには、エラーの発生した行番号、エラーの種類、具体的なエラーメッセージ等が記録される。 | |||
*: <br> | |||
* MAXERRORSオプション (重要) | |||
*: 許容するエラーの最大数を指定する。 | |||
*: この数を超えるとBULK INSERT処理全体が中止される。 | |||
*: 例えば、MAXERRORSオプションを10に設定した場合、11個目のエラーが発生した時点で処理が停止する。 | |||
*: <br> | |||
* CHECK_CONSTRAINTSオプション | |||
*: データの検証に関するエラーハンドリングの設定である。 | |||
*: このオプションをONに設定する場合、制約違反のチェックが行われる。 | |||
*: ただし、パフォーマンスへの影響があるため、データの信頼性が確保されている場合はOFFにする。 | |||
*: <br> | |||
* KEEPNULLSオプション | |||
*: 空の文字列をNULLとして扱うかどうかを制御する。 | |||
*: これにより、NULL制約に関連するエラーを適切に処理することができる。 | |||
<br> | |||
また、詳細なエラー情報を取得する場合は、TRY-CATCHブロックを使用する。<br> | |||
<syntaxhighlight lang="tsql"> | |||
BEGIN TRY | |||
BULK INSERT TargetTable | |||
FROM 'C:\Data\source.txt' | |||
WITH | |||
( | |||
ERRORFILE = 'C:\Errors\error.txt', | |||
MAXERRORS = 10 | |||
); | |||
END TRY | |||
BEGIN CATCH | |||
SELECT | |||
ERROR_NUMBER() AS ErrorNumber, | |||
ERROR_MESSAGE() AS ErrorMessage, | |||
ERROR_SEVERITY() AS ErrorSeverity, | |||
ERROR_STATE() AS ErrorState; | |||
END CATCH | |||
</syntaxhighlight> | |||
<br> | |||
実務では、エラーファイルの内容を定期的に監視して、必要に応じて修正アクションを取ることが推奨される。<br> | |||
エラーファイルには、以下に示すような情報が含まれる。<br> | |||
* エラーが発生した行番号 | |||
* エラーの発生した列 | |||
* エラーの種類 (データ型の不一致、制約違反等) | |||
* 具体的なエラーメッセージ | |||
<br> | |||
エラー発生時のロールバック動作についても理解が重要である。<br> | |||
<code>BATCHSIZE</code>オプションを使用している場合、エラーが発生したバッチのみがロールバックされて、それ以前に正常に取り込まれたデータは保持される。<br> | |||
<br><br> | <br><br> | ||