J'utilise généralement une méthode différente pour charger les données BLOB à l'aide de SQL*Loader. Fondamentalement, j'importe un fichier texte contenant les noms de fichiers et dans le fichier de contrôle, je dis ensuite à SQL * Loader que le contenu réel provient d'un fichier lob.
Dans votre cas, cela signifie que vous devrez créer un fichier texte contenant (uniquement) le nom de fichier du jpg. Le fichier de contrôle devrait alors ressembler à ceci :
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 )
Le fichier d'entrée data.txt
ressemblerait alors à ceci :
0211664.jpg
Il est important que le image lobfile ...
partie est à la fin et que toute définition constante vient en premier dans le fichier de contrôle.
L'utilisation de ce type d'approche me semble beaucoup plus simple car vous n'avez pas besoin de connaître la taille du fichier d'entrée et vous pouvez charger plus d'une image avec une exécution SQL * Loader, ce qui est probablement beaucoup plus rapide si vous avez besoin de charger un grande quantité de photos.
Si vous souhaitez charger plusieurs images, le fichier d'entrée doit contenir les valeurs constantes que vous avez fournies jusqu'à présent dans le fichier de contrôle. Prenez le fichier d'entrée suivant :
6598,PER_PEOPLE_F,0211664.jpg 6599,PER_PEOPLE_F,0123456.jpg 6600,PER_PEOPLE_X,0987654.jpg
Ensuite, vous pouvez charger les trois images avec un seul fichier de contrôle :
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 )
Le fichier de contrôle ne changera jamais, seul le contenu de data.txt
fichier.
Votre fichier de contrôle d'origine fonctionne pour moi, si le raw(9529)
est complètement supprimé :
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" )