Mazání záznamů v dávkách lze provádět ve smyčce PL/SQL, ale obecně se to považuje za špatnou praxi, protože celé odstranění by mělo být normálně považováno za jednu transakci; a to nelze provést z ovládacího souboru SQL*Loader. Váš DBA by měl mít velikost UNDO
prostor pro práci, kterou musíte udělat.
Pokud odstraňujete celou tabulku, téměř jistě bude lepší provést zkrácení, buď v ovládacím souboru :
options(skip=1,load=250000,errors=0,ROWS=30000,BINDSIZE=10485760)
load data
infile 'G:1.csv' "str '^_^'"
truncate
into table IMPORT_ABC
...
Nebo jako samostatný truncate
v SQL*Plus/SQL Developer/nějakém jiném klientovi před zahájením načítání:
truncate table import_abc;
Nevýhodou je, že při načítání nových řádků se ostatním uživatelům bude vaše tabulka zdát prázdná, ale pokud se jedná o vyhrazenou oblast pro import (odhaduji z názvu), na tom stejně nemusí záležet.
Pokud váš UNDO
je opravdu tak malý, že možná budete muset spustit více zátěží, v takovém případě – pravděpodobně samozřejmě – se musíte ujistit, že máte pouze truncate
v kontrolním souboru pro první z nich (nebo použijte samostatný truncate
prohlášení) a append
kód>
místo toho v následných kontrolních souborech, jak jste poznamenali v komentářích.
Můžete také zvážit externí tabulky
pokud tato data používáte jako základ k naplnění něčeho jiného, protože neexistuje žádné UNDO
režii na výměnu externího zdroje dat. Pravděpodobně si budete muset promluvit se svým DBA o tom, jak to nastavit a dát vám potřebná oprávnění k adresářům.