sql >> Databasteknik >  >> RDS >> Oracle

Oracle hur man laddar en bild i en blobkolumn med sqlldr

Jag använder vanligtvis ett annat sätt att ladda BLOB-data med SQL*Loader. I princip importerar jag en textfil som innehåller filnamnen och i kontrollfilen säger jag sedan till SQL*Loader att det faktiska innehållet kommer från en lobfil.

I ditt fall betyder detta att du skulle behöva skapa en textfil som innehåller (endast) filnamnet för jpg. Kontrollfilen bör då se ut så här:

LOAD DATAinfile data.txtTRUNCATEINTO TABLE per_imagesFIELDS TERMINATED BY ',' TRAILING NULLCOLS( input_file FILLER, image_id "PER_IMAGES_s.nextval", parent_id konstant 6598, tabellnamn konstant "PER_PEOPLE_F", image lobfile(input_file) avslutad av eof )

Indatafilen data.txt skulle då se ut så här:

0211664.jpg

Det är viktigt att image lobfile ... del är i slutet och att eventuell konstant definition kommer först i kontrollfilen.

Att använda den här typen av tillvägagångssätt verkar mycket enklare för mig eftersom du inte behöver veta storleken på inmatningsfilen och du kan ladda mer än en bild med en SQL*Loader-körning som med största sannolikhet är mycket snabbare om du behöver ladda en stor mängd bilder.

Om du vill ladda mer än en bild måste indatafilen innehålla de konstanta värden som du har angett hittills i kontrollfilen. Ta följande indatafil:

6598,PER_PEOPLE_F,0211664.jpg6599,PER_PEOPLE_F,0123456.jpg6600,PER_PEOPLE_X,0987654.jpg

Sedan kan du ladda alla tre bilderna med en enda kontrollfil:

LOAD DATAinfile data.txtTRUNCATEINTO TABLE per_imagesFIELDS TERMINATED BY ',' TRAILING NULLCOLS( parent_id, table_name, input_file FILLER, image_id "PER_IMAGES_s.nextval", image lobfile(input_file of)
 Kontrollfilen kommer aldrig att ändras, bara innehållet i data.txt fil.

Din ursprungliga kontrollfil fungerar för mig, om raw(9529) tas bort helt:

alternativ (bindstorlek 9529) ladda datainfil 0211664.jpg "fix 9529"appendinto table PER_IMAGES( image, parent_id constant 6598, table_name constant "PER_PEOPLE_F", image_id "PER_IMAGES_s.nextval")



  1. Hur tillhandahåller man ett lösenord för PostgreSQL:s skapadeb icke-interaktivt?

  2. Anslutningar är ibland inte tillgängliga i c3p0

  3. Lägg resultat av mysql kommandoradsfråga i bash script variabel

  4. Ansluter till Oracle19C Server med Oracle11g-klient