Di solito uso un modo diverso per caricare i dati BLOB usando SQL*Loader. Fondamentalmente importo un file di testo che contiene i nomi dei file e nel file di controllo, quindi dico a SQL*Loader che il contenuto effettivo proviene da un lobfile.
Nel tuo caso questo significa che dovrai creare un file di testo che contenga (solo) il nome del file jpg. Il file di controllo dovrebbe quindi essere simile a questo:
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 )
Il file di input data.txt
sarebbe quindi simile a questo:
0211664.jpg
È importante che il image lobfile ...
parte è alla fine e che qualsiasi definizione di costante viene prima nel file di controllo.
L'uso di questo tipo di approccio mi sembra molto più semplice perché non è necessario conoscere la dimensione del file di input e puoi caricare più di un'immagine con un'esecuzione SQL*Loader che molto probabilmente è molto più veloce se devi caricare un grande quantità di immagini.
Se vuoi caricare più di un'immagine, il file di input deve contenere i valori costanti che hai fornito finora all'interno del file di controllo. Prendi il seguente file di input:
6598,PER_PEOPLE_F,0211664.jpg 6599,PER_PEOPLE_F,0123456.jpg 6600,PER_PEOPLE_X,0987654.jpg
Quindi puoi caricare tutte e tre le immagini con un unico file di controllo:
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 )
Il file di controllo non cambierà mai, solo il contenuto del data.txt
file.
Il tuo file di controllo originale funziona per me, se il raw(9529)
viene rimosso completamente:
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" )