sql >> Database teknologi >  >> RDS >> Oracle

Oracle hvordan man indlæser et billede i en klatkolonne ved hjælp af sqlldr

Jeg bruger normalt en anden måde at indlæse BLOB-data ved hjælp af SQL*Loader. Som udgangspunkt importerer jeg en tekstfil, der indeholder filnavnene, og i kontrolfilen fortæller jeg så SQL*Loader, at det faktiske indhold kommer fra en lobfil.

I dit tilfælde betyder det, at du skal oprette en tekstfil, der (kun) indeholder filnavnet på jpg. Kontrolfilen skulle så se sådan ud:

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

Inputfilen data.txt ville så se sådan ud:

0211664.jpg

Det er vigtigt, at image lobfile ... del er i slutningen, og at enhver konstant definition kommer først i kontrolfilen.

At bruge denne form for tilgang virker meget enklere for mig, fordi du ikke behøver at kende størrelsen på inputfilen, og du kan indlæse mere end ét billede med en SQL*Loader-kørsel, som sandsynligvis er meget hurtigere, hvis du skal indlæse en store mængder billeder.

Hvis du vil indlæse mere end ét billede, skal inputfilen indeholde de konstante værdier, som du har angivet indtil videre inde i kontrolfilen. Tag følgende inputfil:

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

Så kan du indlæse alle tre billeder med en enkelt kontrolfil:

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)
 Kontrolfilen vil aldrig ændre sig, kun indholdet af data.txt fil.

Din originale kontrolfil virker for mig, hvis raw(9529) fjernes fuldstændigt:

indstillinger (bindstørrelse 9529) indlæs data i fil 0211664.jpg "fix 9529"tilføjelse til tabel PER_IMAGES(billede, parent_id konstant 6598, tabelnavn konstant "PER_PEOPLE_F", image_id "PER_IMAGES_s.nextval")



  1. Er der en LISTAGG WITHIN GROUP-ækvivalent i SQLAlchemy?

  2. Sådan opdaterer du en kolonne med sammenkædning af to andre kolonner i samme tabel

  3. Kald en lagret procedure for hver række, der returneres af en forespørgsel i MySQL

  4. MySQL forkert nøglefil til tmp-tabel, når der laves flere joinforbindelser