レコードをバッチで削除することはPL/SQLループで実行できますが、削除全体は通常1つのトランザクションと見なされるため、一般的には悪い習慣と見なされます。これは、SQL*Loader制御ファイル内からは実行できません。 DBAはUNDO
のサイズを設定する必要があります あなたがする必要がある仕事を収容するためのスペース。
テーブル全体を削除する場合は、いずれにせよ、制御ファイル内 :
options(skip=1,load=250000,errors=0,ROWS=30000,BINDSIZE=10485760)
load data
infile 'G:1.csv' "str '^_^'"
truncate
into table IMPORT_ABC
...
または、個別の切り捨て
として
ロードを開始する前のSQL*Plus / SQL Developer /その他のクライアントのステートメント:
truncate table import_abc;
欠点は、新しい行が読み込まれている間、他のユーザーにはテーブルが空に見えることですが、それが専用のインポート領域(名前から推測)の場合は、とにかく問題にならない可能性があります。
UNDO
の場合 は実際には非常に小さいため、複数のロードを実行する必要がある場合があります。その場合、おそらく明らかに、 truncate
のみがあることを確認する必要があります。 最初のものの制御ファイルで(または別の truncate
を使用します ステートメント)、を追加コード>
代わりに、コメントで指摘したように、後続の制御ファイルで。
外部テーブル
も検討することをお勧めします。 UNDO
がないため、このデータをベースとして他のデータを入力する場合 外部データソースを置き換える際のオーバーヘッド。おそらく、その設定と必要なディレクトリ権限の付与についてDBAに相談する必要があります。