6 ottobre 2017 12:53
Cancellazione massiva di immagini in Lightroom
Oggi aprendo un Catalogo di Lightroom ho notato che era lentissimo e indagando ho scoperto che per sbaglio avevo lanciato una sincronizzazione (import di foto da una cartella già importata) su una folder che ne conteneva migliaia.
Otre quindi ad aver importato circa 90000 foto inutili, queste erano tutte divise in migliaia di cartelle, che per un bug di LR non riuscivo a riunire in un unico Parent Folder. La UI di scorrimento infatti per il numero troppo elevato di cartelle si incartava e pensare di fare cancellare/rimuovere circa 8000 subfolder a mano era impossibile.
Il cursore si blocca in fondo e non va oltre… non è quindi possibile visualizzare la sua root/parent folder che sia chiama c:\dev per cancellare tutte le sue foto o rimuovere la folder
Rivangato un mio vecchio post dove descrivevo la struttura delle tabelle del database Sqlite, ho fatto un tentativo di cancellazione da codice, ovviamente facendo prima sia un backup da dentro LR, che una copia del file .lrcat
Da questa struttura si evince subito che bisogna cancellare a ritroso le informazioni delle 4 tabelle; la query sottostante fa appunto questo (ovviamente non viene gestita una cascade delete, non so neppure se Sqlite lo permetta).
Riaperto il catalogo tutto funzionava a dovere. Ho rifatto un backup e un'ottimizzazione e il catalogo è ora perfettamente funzionante.
DELETE from Adobe_Images where rootFile in
(
select id_local from AgLibraryFile where folder IN
(
select id_local from AgLibraryFolder where rootFolder IN
(
select id_local from AglibraryRootFolder where absolutePath like 'C:/DEV%'
)
)
)
DELETE from AgLibraryFile where folder IN
(
select id_local from AgLibraryFolder where rootFolder IN
(
select id_local from AglibraryRootFolder where absolutePath like 'C:/DEV%'
)
)
DELETE from AgLibraryFolder where rootFolder IN
(
select id_local from AglibraryRootFolder where absolutePath like 'C:/DEV%'
)
DELETE from AglibraryRootFolder where absolutePath like 'C:/DEV%'