ロード・ユーティリティーを使用すると、入力データに ID 列の値があるかどうかにかかわりなく、ID 列が含まれている表にデータをロードできます。
ID 関連のファイル・タイプ修飾子が使用されない場合、 このユーティリティーは次のような規則に従って動作します。
ロード・ユーティリティーは、ユーザー提供の ID 値に関して、 ID 列のデータ・タイプ (SMALLINT、INT、BIGINT、または DECIMAL) の値に対して通常以外の妥当性検査は行いません。 値が重複していても報告されません。
表をパーティション・データベースにロードするときに、 表のパーティション・キーに ID 列があり、identityoverride 修飾子が指定されていない場合、SAVECOUNT オプションを指定できません。 パーティション・キーに ID 列があり、ID 値が生成されている場合、少なくとも 1 つのデータベース・パーティション上のロード・フェーズからロードを再始動するには、ロード・フェーズの最初からロード全体を再始動する必要があります。これは、整合点が見つからないことを意味します。
ID 列が含まれている表にデータをロードする操作を簡略化するには、ファイル・タイプ修飾子として、identitymissing、 identityignore、および identityoverride の 3 つのうちのいずれかを使用する方法があります。これらの指定は相互に排他的です。
create table table1 (c1 varchar(30),
c2 int generated by default as identity,
c3 decimal(7,2),
c4 char(1))
Robert, 45.2, J
Mike, 76.9, K
Leo, 23.4, I
db2 load from load.del of del replace into table1 (c1, c3, c4)
db2 load from load.del of del modified by identitymissing
replace into table1
このコマンドを実行すると、データ・ファイルの 3 つの列が TABLE1 の c1、c3、および c4 にロードされます。
値は c2 の各行に生成されます。 Robert, 1, 45.2, J
Mike, 2, 76.9, K
Leo, 3, 23.4, I
db2 load from load.del of del method P(1, 3, 4)
replace into table1 (c1, c3, c4)
db2 load from load.del of del modified by identityignore
replace into table1
ユーザー指定値を持つデータのロード
identityoverride 修飾子は、
GENERATED ALWAYS ID 列をもつ表にユーザー指定値をロードするために使用します。
これが非常に役立つのは、
別のデータベース・システムからデータをマイグレーションするときに GENERATED ALWAYS として表を定義しなければならない場合、
または ROLLFORWARD DATABASE コマンドで DROPPED TABLE RECOVERY オプションを使用してリカバリーしたデータから表をロードする場合です。
この修飾子を使用した場合、
ID 列でデータ (または NULL データ) の入っていない行はリジェクトされます (SQL3116W)。
この修飾子を使用すると、
GENERATED ALWAYS 列の固有性特性に違反する可能性があることも覚えておいてください。
この違反が発生した場合にはまず LOAD TERMINATE 操作を実行し、その後、LOAD INSERT または LOAD REPLACE 操作を実行してください。