Usuwanie rekordów w partiach można wykonać w pętli PL/SQL, ale jest to ogólnie uważane za złą praktykę, ponieważ całe usuwanie powinno normalnie być traktowane jako pojedyncza transakcja; a tego nie można zrobić z poziomu pliku kontrolnego SQL*Loader. DBA powinien mieć rozmiar COFNIJ
miejsce na pracę, którą musisz wykonać.
Jeśli usuniesz całą tabelę, prawie na pewno lepiej będzie obcinać, albo w pliku kontrolnym :
options(skip=1,load=250000,errors=0,ROWS=30000,BINDSIZE=10485760)
load data
infile 'G:1.csv' "str '^_^'"
truncate
into table IMPORT_ABC
...
Lub jako oddzielny obcinanie
instrukcja w SQL*Plus/SQL Developer/innym kliencie przed rozpoczęciem ładowania:
truncate table import_abc;
Wadą jest to, że Twoja tabela będzie wyświetlana innym użytkownikom jako pusta podczas ładowania nowych wierszy, ale jeśli jest to dedykowany obszar importu (zgadując z nazwy), może to i tak nie mieć znaczenia.
Jeśli twoje COFNIJ
jest naprawdę tak mały, że może być konieczne uruchomienie wielu obciążeń, w takim przypadku - prawdopodobnie oczywiście - musisz upewnić się, że masz tylko obcinanie
w pliku kontrolnym dla pierwszego (lub użyj oddzielnego obcinania
oświadczenie) i dołącz
zamiast tego w kolejnych plikach kontrolnych, jak zanotowałeś w komentarzach.
Możesz również rozważyć tabele zewnętrzne
jeśli używasz tych danych jako bazy do wypełnienia czegoś innego, ponieważ nie ma opcji COFNIJ
narzut na wymianę zewnętrznego źródła danych. Prawdopodobnie będziesz musiał porozmawiać z DBA o skonfigurowaniu tego i nadaniu niezbędnych uprawnień do katalogu.