Eu costumo usar uma maneira diferente de carregar dados BLOB usando SQL*Loader. Basicamente importo um arquivo de texto que contém os nomes dos arquivos e no arquivo de controle, digo ao SQL*Loader que o conteúdo real vem de um arquivo lob.
No seu caso, isso significa que você precisaria criar um arquivo de texto que contenha (somente) o nome do arquivo do jpg. O arquivo de controle deve ficar assim:
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 )
O arquivo de entrada
data.txt
então ficaria assim:0211664.jpg
É importante que o
image lobfile ...
parte está no final e que qualquer definição de constante vem primeiro no arquivo de controle. Usar esse tipo de abordagem parece muito mais simples para mim porque você não precisa saber o tamanho do arquivo de entrada e pode carregar mais de uma imagem com uma execução do SQL*Loader, que provavelmente é muito mais rápida se você precisar carregar um grande quantidade de fotos.
Se você quiser carregar mais de uma imagem, o arquivo de entrada precisa conter os valores constantes que você forneceu até agora dentro do arquivo de controle. Pegue o seguinte arquivo de entrada:
6598,PER_PEOPLE_F,0211664.jpg 6599,PER_PEOPLE_F,0123456.jpg 6600,PER_PEOPLE_X,0987654.jpg
Então você pode carregar todas as três imagens com um único arquivo de controle:
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 )
O arquivo de controle nunca será alterado, apenas o conteúdo do
data.txt
Arquivo. Seu arquivo de controle original funciona para mim, se o
raw(9529)
é removido 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" )