17.9.1 入力データの論理エラーが発生したときの対処手順と対処方法
入力データの論理エラーが発生したときの対処手順(フロー)を「図17‒18 入力データの論理エラーが発生したときの対処手順」に示します。なお,この手順は,論理エラーデータファイルに論理エラーデータが出力されていることが前提となっています。
GZIP形式で圧縮した入力データファイルを使用している場合,入力データとは,伸長したデータを指しています。
各手順の詳細を説明します。
(1) 論理エラーデータファイルを退避する
論理エラーデータファイルを退避してください。
(2) 論理エラーデータに関するメッセージを確認する
KFAA50217-E〜KFAA50224-Eメッセージ,およびKFAA52100-Eメッセージが,論理エラーデータに関するメッセージです。これらのメッセージが出力されているかを確認してください。
(3) 論理エラーデータを修正する
論理エラーデータファイルは,次の3つの組み合わせによって出力パターンが異なります。
-
インポート対象表のデータ格納形式の種類
-
入力データファイルのファイル形式の種類
-
インポート時の列構成情報ファイル(adbimportコマンドの-rオプション)の指定有無
論理エラーデータファイルの出力パターンを次に示します。
-
論理エラーが発生した行データがそのまま出力される場合
次に示すどれかの場合は,論理エラーデータファイルには論理エラーが発生した行データがそのまま出力されます。
-
ローストア表にデータをインポートする際,入力データファイルのファイル形式がCSV形式の場合で,かつadbimportコマンドの-rオプションを指定しなかった場合
-
ローストア表にデータをインポートする際,入力データファイルのファイル形式が固定長形式の場合
-
カラムストア表にデータをインポートする場合
-
-
論理エラーが発生した行データのうち,処理対象表への格納対象となったフィールドデータだけが切り出される場合
次に示す条件を満たす場合は,論理エラーデータファイルには処理対象表への格納対象となったフィールドデータだけが切り出されます。
-
ローストア表にデータをインポートする
-
入力データファイルのファイル形式がCSV形式である
-
adbimportコマンドの-rオプションに列構成情報ファイルを指定した
-
それぞれの場合の対処方法を次に示します。
(a) 論理エラーが発生した行データがそのまま出力される場合
「(1) 論理エラーデータファイルを退避する」で退避した論理エラーデータファイルを開いて,論理エラーデータを修正します。
論理エラーデータの出力行と,「(2) 論理エラーデータに関するメッセージを確認する」のメッセージの出力順が一致しています。出力されたメッセージを参照して,論理エラーデータファイル中のデータを直接修正してください。
出力されたメッセージの例
KFAA50217-E The input data length is invalid.
(input file = 1, row = 1, column = 2, element = 0) ...1
KFAA50222-E The input data contains an invalid empty string.
(input file = 1, row = 2, column = 3) ...2
:
- [説明]
-
-
KFAA50217-Eメッセージは,データ長に誤りがあるときに出力されるメッセージです。
論理エラーが発生したデータの入力データファイル中の位置が「input file = 1 ,row = 1, column = 2」に表示されます。この例の場合,入力データパスファイル中の1番目(input file)に指定した入力データファイルの中の,1行目(row)の2カラム目(column)のデータに論理エラーが発生したことを示しています。
-
KFAA50222-Eメッセージは,非ナル値制約の列のデータに空文字列がある場合に出力されるメッセージです。
-
論理エラーデータファイルの内容(行データがそのまま出力される場合)
(b) 処理対象表への格納対象となったデータだけが切り出される場合
論理エラーデータが,処理対象表への格納対象となったフィールドデータなのかどうかによって,対処方法が異なります。
-
処理対象表への格納対象となったフィールドデータが論理エラーになった場合
論理エラーデータファイルには,エラー対象のフィールドデータが出力されています。
この場合,「(1) 論理エラーデータファイルを退避する」で退避した論理エラーデータファイルを開いて,論理エラーデータを修正します。
論理エラーデータの出力行と,「(2) 論理エラーデータに関するメッセージを確認する」のメッセージの出力順が一致しています。出力されたメッセージを参照して,論理エラーデータファイル中のデータを直接修正してください。
-
処理対象表への格納対象外となったフィールドデータが論理エラーになった場合
論理エラーデータファイルには,エラー対象のフィールドデータが出力されません。
この場合,「(2) 論理エラーデータに関するメッセージを確認する」で確認したメッセージを参照して,入力データファイルでエラーの要因を確認します。
入力データファイルの該当する行データを確認した上で,論理エラーデータファイルに出力された内容に問題がなければ,論理エラーデータファイルを修正する必要はありません。論理エラーデータファイルに出力された内容に問題があれば,入力データファイルから該当する行データを取り出して,修正してください。
出力されるメッセージは,論理エラーが発生した行データがそのまま出力される場合と同じです。メッセージの例は,「(a) 論理エラーが発生した行データがそのまま出力される場合」を参照してください。
論理エラーデータファイルの内容(格納対象となったデータだけが切り出される場合)
- メモ
-
格納対象となったデータだけが論理エラーデータファイルに切り出される場合,論理エラーデータファイルには,入力データファイルとフィールドデータの数が同じになるように区切り文字が切り出されます(このため,adbimportコマンドの再実行時には,オプションを変更しないで,修正後の論理エラーデータファイルを入力データファイルとして使用できます)。
ただし,処理対象表への格納対象外になったフィールドデータ番号の最大値+1番目以降の区切り文字は切り出されません。
(4) adbimportコマンドを再実行する
adbimportコマンドを再実行して,修正したデータをインポートします。修正したデータを格納したファイル(論理エラーデータファイル)を入力データファイルにして,adbimportコマンドを再実行してください。
論理エラーデータファイルを修正する必要がなかった場合は,出力された論理エラーデータファイルをそのまま入力データファイルにしてください。また,入力データファイルの行データを取り出して修正した場合は,取り出して修正した行データを格納したファイルを,入力データファイルにしてください。
- 重要
-
必ず追加モード(-dオプションを指定しない)でadbimportコマンドを実行してください。作成モードでadbimportコマンドを実行すると,インポート済みの正常データが削除されてしまいます。
-dオプション以外のオプションの指定は,基本的には変更しないでください。インポートオプションの指定も基本的には変更しないでください。