On my new Linux installation I wanted to have all my images in one folder. Due to some mishaps F-Spot had stored the images in three different locations. I looked a bit around and then found a forum post which described an easy way to do this.
Find your photos.db database. It’s usually in ./config/f-spot/. Then use sqlite3 to extract the information into a text file:
sqlite3 ~/.config/f-spot/photos.db .dump > f-spot.dump
If you stare wondering at a “bash: sqlite3: command not found”, just install the package “sqlite3-tools”.
Now open this file in your text editor (not word processor…..) of choice. You’ll see a lot of lines, among them images with paths. Just change these paths with search and replace to the new scheme.
INSERT INTO "photos" VALUES(4243,1243489564,'file:///home/rs/Pictures/Photos/2009/05/28/','RLF_9743.JPG','Rolf Steinort email@example.com',38,1,0);
Take care to only change the paths, don’t delete or change any of the other stuff. It can break everything.
Now make a backup of your database and import the changed data back into the database.
mv ~/.config/f-spot/photos.db photos.db.backup
sqlite3 ~/.config/f-spot/photos.db < f-spot.dump
This is only working when no database is there, so make the backup! If you run into an error, delete the new database.
Of course you should only start F-Spot again if you are sure that all the files have reached their new destinations safely.
Other news: Shotwell imports F-Spot data and images without problems. And #150 has been recorded the third time and is just in the rendering tool chain. I'll know about the result in some moments.