Fikse sidecar filproblem i LightRoom

LightRoom DataBasen
LightRoom (LR) benytter en database for å lagre all informasjon om bildene. Den heter gjerne noe slikt som «Lightroom Library.lrcat»
Plasseringen finner du ved å trykke «Ctrl + Alt + ,» (komma som siste tegn).
DataBasen er en SQLite Database og det finnes verktøy som kan åpne og manipulere denne direkte. Vi skal videre se på hvordan den kan søkes og manupuleres med SQLiteSPy som du finner her: http://www.softpedia.com/get/Internet/Servers/Database-Utils/SQLiteSpy.shtml


Det neste du gjør nå er å ta en kopi av LRCAT filen til et trygt sted før du begynner å manipulere den med SQLiteSpy.

Hva er så SideCar files?
Dette er filer som bindes sammen med original filen. Hvis du for eksempel tar både RAW + JPG så vil LR under import – såfremt du ikke under Edit>Preferences>Import har valgt «Treat JPG next to RAW as separate photos» – gi begge filene samme navn (nnnyyxx.NEF og nnnyyxx.jpg) og binde de sammen. LR viser bare RAW filen, men det finnes nå en binding til JPG filen som ligger i den samme mappen på disken. Hvis du også har benyttet deg av Edit>Catalog Settings>Metadata «Automatically write changes into XMP» så vil det for hvert RAW fil du redigerer opprettes en XMP fil med endringene. Disse lagres også i databasen. XMP filen kan leses av både PS CS3 og CS4. Det betyr at de justeringene du har foretatt i LR vil kunne leses inn av CS3 og CS4. Dette gjør det veldig enkelt hvis du vil ta en kopi av disk mappen for å jobbe videre i CS3 og CS4 på en annen maskin. Du slipper da å exportere filene til TIF eller JPG først.

Hva er problemet?
Hvis du nå skulle komme i skade for å slette JPG eller XMP filene fra en av dine disk mapper med feks utforsker, så kan du etterhvert få et problem hvis du skal flytte filene til en annen disk mappe med LR. For hver fil du prøver å  flytte vil du få opp en feilmelding om at sidecar filen mangler. Du må da manuelt fjerne koblingen til «SideCar» filen. Dette kan man ikke gjøre på mange filer samtidig, noe som gjør det til en meget omstendig og tungvinn prosess. Spesielt om det gjelder mange hundre/tusen filer.

Søke i databasen
Når du har lastet ned å pakket ut SQLiteSpy så starter du programmet og åpner en LR DataBasen. I det øverste feltet i toppen kan du skrive inn SQL spørringer for å søke opp status for filene dine. % tegnet fungerer som en wild-char  i spørringen. I steden for LIKE så kan man bruke =, men da må ikke % benyttes. SQL spørringene er ikke «case sensitive» så her kan man mikse med små/store bokstaver. I eksempelet under så vil du finne alle filer som begynner på S og som har sidecar fil med filtype jpg eller jpg,xmp.
SELECT basename, extension, originalfilename, sidecarExtensions  FROM AgLibraryFile where basename LIKE ‘S%’ and sidecarExtensions LIKE ‘%jpg%’

Avansert søk i databasen
Vil du gå litt videre og søke opp alle filer som begynner på S, har sidecar av typen JPG og er datert mellom 01.01.2008 kl 00:00:00 til 31.01.2008 kl. 00:00:00 så bruk:
SELECT aglibraryfile.basename, aglibraryfile.extension, aglibraryfile.originalfilename, Adobe_images.capturetime, aglibraryfile.sidecarExtensions  FROM AgLibraryFile, Adobe_images where aglibraryfile.id_local = adobe_images.rootfile and (adobe_images.capturetime BETWEEN ‘2008-01-01T00:00:00’ AND ‘2008-01-31T00:00:00’) AND (aglibraryfile.basename LIKE ‘S%’ and aglibraryfile.sidecarExtensions LIKE ‘%jpg%’)
Ønsker du å utføre spørringen uten navn så bruk:
SELECT aglibraryfile.basename, aglibraryfile.extension, aglibraryfile.originalfilename, Adobe_images.capturetime, aglibraryfile.sidecarExtensions  FROM AgLibraryFile, Adobe_images where aglibraryfile.id_local = adobe_images.rootfile and (adobe_images.capturetime BETWEEN ‘2008-01-01T00:00:00’ AND ‘2008-01-31T00:00:00’) AND  aglibraryfile.sidecarExtensions LIKE ‘%jpg%’

Manipulere databasen
Nå har du funnet ut at flere av dine RAW filer har en kobling til sidecar filer. Hvis du med utforskeren ikke finner  sidecar filene på disken sammen med RAW filen, så har du et problem. Dette kan du løse ved å fjerne koblingen til sidecar filene ved ganske enkelt å sette SidecarExtension til blank ». Skal du nullstille sidecarExtensions for alle filer som begynner på S og som har JPG som sidecarExtensions så bruk følgende:
update «AgLibraryFile» set sidecarExtensions = » where basename LIKE ‘S%’ and sidecarExtensions = ‘jpg’
Legge merke til at vi nå benytter = og ikke LIKE for jpg/jpg,xmp/xmp,jpg utvelgesen. Dette gjør vi fordi det kun er koblinger til sidecarExtensions jpg som skal fjernes. Husk at det kan være koblinger til  jpg,xmp/xmp,jpg. Disse vil vi ikke sette til blank, men derimot til bare xmp. Derfor må vi kjøre samme kommandoen en gang med noen små endringer:
update «AgLibraryFile» set sidecarExtensions = ‘xmp’ where basename LIKE ‘S%’ and (sidecarExtensions = ‘jpg,xmp’ OR sidecarExtensions = ‘xmp,jpg’)

Avansert manipulering av databasen
Det var kanskje ikke så lurt å endre alle filene som begynner på S. Det kunne jo hende vi fjernet noen koblinger som skulle være der. Da kan vi bruke en del av den avanserte spørringen for å begrense endringen til å gjelde et bestemt tidsrom. La oss si at vi vil endre de samme filene vi søkte opp under Avansert søk. Bruk følgende for å slette JPG koblingen:
update «AgLibraryFile» set sidecarExtensions = » where aglibraryfile.id_local = adobe_images.rootfile and (adobe_images.capturetime BETWEEN ‘2008-01-01T00:00:00’ AND ‘2008-01-31T00:00:00’) AND (aglibraryfile.basename LIKE ‘S%’ and aglibraryfile.sidecarExtensions = ‘jpg’)
La oss også ta hensyn til at det kan være jpg,xmp/xmp,jpg koblinger som også må rettes opp. Bruk følgende:
update «AgLibraryFile» set sidecarExtensions = ‘xmp’ where aglibraryfile.id_local = adobe_images.rootfile and (adobe_images.capturetime BETWEEN ‘2008-01-01T00:00:00’ AND ‘2008-01-31T00:00:00’) AND (aglibraryfile.basename LIKE ‘S%’ and (aglibraryfile.sidecarExtensions = ‘jpg,xmp’ OR aglibraryfile.sidecarExtensions = ‘xmp,jpg’))
Ønsker du å utføre endringene uten å selectere på spesielle navn så kan du benytte følgende update for å fjerne jpg koblingen:
update «AgLibraryFile» set sidecarExtensions = » where aglibraryfile.id_local = adobe_images.rootfile and (adobe_images.capturetime BETWEEN ‘2008-01-01T00:00:00’ AND ‘2008-01-31T00:00:00’) AND aglibraryfile.sidecarExtensions = ‘jpg’
Update av jpg,xmp/xmp,jpg blir da:
update «AgLibraryFile» set sidecarExtensions = ‘xmp’ where aglibraryfile.id_local = adobe_images.rootfile and (adobe_images.capturetime BETWEEN ‘2008-01-01T00:00:00’ AND ‘2008-01-31T00:00:00’) AND (aglibraryfile.sidecarExtensions = ‘jpg,xmp’ OR aglibraryfile.sidecarExtensions = ‘xmp,jpg’)

Viktig å merke seg at vi ikke tar noe ansvar for endringer som medfører krasj på databasen. Det er derfor særdeles viktig at du tar vare på originalen og ikke rører den før har verifisert at de endringene som er utført med SQLiteSpy er OK.

Det var alt for denne gang.
Hilsen Odd Eirik 😉