Ik gebruik meestal een andere manier om BLOB-gegevens te laden met SQL * Loader. In principe importeer ik een tekstbestand dat de bestandsnamen bevat en in het controlebestand vertel ik SQL*Loader dat de daadwerkelijke inhoud uit een lobbestand komt.
In uw geval betekent dit dat u een tekstbestand moet maken dat (alleen) de bestandsnaam van de jpg bevat. Het controlebestand zou er dan als volgt uit moeten zien:
LOAD DATA infile data.txt TRUNCATE INTO TABLE per_images FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( input_file FILLER, image_id "PER_IMAGES_s.nextval", parent_id constant 6598, table_name constant "PER_PEOPLE_F", image lobfile(input_file) terminated by eof )
Het invoerbestand data.txt
ziet er dan als volgt uit:
0211664.jpg
Het is belangrijk dat het image lobfile ...
deel aan het einde is en dat elke constante definitie eerst komt in het controlebestand.
Het lijkt mij veel eenvoudiger om dit soort benadering te gebruiken, omdat u de grootte van het invoerbestand niet hoeft te weten en u meer dan één afbeelding kunt laden met een SQL*Loader-run, wat hoogstwaarschijnlijk een stuk sneller is als u een grote hoeveelheid foto's.
Als u meer dan één afbeelding wilt laden, moet het invoerbestand de constante waarden bevatten die u tot nu toe in het controlebestand hebt opgegeven. Neem het volgende invoerbestand:
6598,PER_PEOPLE_F,0211664.jpg 6599,PER_PEOPLE_F,0123456.jpg 6600,PER_PEOPLE_X,0987654.jpg
Vervolgens kunt u alle drie de foto's laden met een enkel controlebestand:
LOAD DATA infile data.txt TRUNCATE INTO TABLE per_images FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( parent_id, table_name, input_file FILLER, image_id "PER_IMAGES_s.nextval", image lobfile(input_file) terminated by eof )
Het controlebestand zal nooit veranderen, alleen de inhoud van de data.txt
bestand.
Uw originele controlebestand werkt voor mij, als de raw(9529)
is volledig verwijderd:
options (bindsize 9529) load data infile 0211664.jpg "fix 9529" append into table PER_IMAGES ( image, parent_id constant 6598, table_name constant "PER_PEOPLE_F", image_id "PER_IMAGES_s.nextval" )