Peter said:
Thanks, I have read some fine print way down on a
relevant page which suggests that all the Firefox
bookmarks should be imported into IE9 and then
processed with the AM-Deadlink. The remainder
can then be imported back into Firefox.
Still, I'll check out your links first.
Peter
Firefox uses multiple SQLite databases. With the right database
tool, you can issue commands to modify the database. So I would
say it should be possible to do, from a technical viewpoint.
You would want Firefox shut down, while making changes to the
file with some other tool.
You can "dump" an sqlite database, which converts an SQLite
file, into a text file full of commands. On my machine, this
file is a 16MB text file. In theory, reading this file back
into SQLite, recreates the SQLite file. As long as you
carefully edit such a file, it should work.
sqlite3.exe places.sqlite .dump > sometextfile.txt
This is a few lines of stuff, snipped from the file.
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE moz_bookmarks (id INTEGER PRIMARY KEY,type INTEGER,
fk INTEGER DEFAULT NULL, parent INTEGER, position INTEGER,
title LONGVARCHAR, keyword_id INTEGER, folder_type TEXT,
dateAdded INTEGER, lastModified INTEGER);
INSERT INTO "moz_bookmarks" VALUES(103,1,138,2,28,
'PC ATI Radeon 9800 Pro conversion to Mac',
NULL,NULL,1221301522000000,1220759377000000);
CREATE TRIGGER moz_historyvisits_afterinsert_v1_trigger AFTER INSERT
ON moz_historyvisits FOR EACH ROW WHEN NEW.visit_type
NOT IN (0,4,7) BEGIN UPDATE moz_places
SET visit_count = visit_count + 1
WHERE moz_places.id = NEW.place_id; END;
CREATE TRIGGER moz_historyvisits_afterdelete_v1_trigger
AFTER DELETE ON moz_historyvisits FOR EACH ROW WHEN
OLD.visit_type NOT IN (0,4,7) BEGIN UPDATE moz_places
SET visit_count = visit_count - 1 WHERE
moz_places.id = OLD.place_id AND visit_count > 0; END;
CREATE TRIGGER moz_bookmarks_beforedelete_v1_trigger
BEFORE DELETE ON moz_bookmarks FOR EACH ROW WHEN OLD.keyword_id
NOT NULL BEGIN DELETE FROM moz_keywords
WHERE id = OLD.keyword_id AND NOT EXISTS
(SELECT id FROM moz_bookmarks WHERE
keyword_id = OLD.keyword_id AND id <> OLD.id LIMIT 1); END;
COMMIT;
I'm not suggesting you actually edit it, because
editing the thing consistently is hard. But it does show
that a tool exists for manipulating the file.
I keep a copy of SQLite3 here, for playing with
the SQLite files. I originally got this, so I
could experiment with the vacuum command.
http://sqlite.org/sqlite.html
I would guess, it would be relatively easy, to remove just the bookmark,
leaving dead annotations and a reference to the URL, behind in the
database. It would cosmetically look like you cleaned it up, while
leaving a mess behind for another day.
This is an example of the schema. You can see a table
call moz_bookmarks exists here, just like the .dump
above said it would. This diagram shows the relationship
of the tables to one another.
http://people.mozilla.org/~dietrich/places-erd.png
*******
Or, you could use the add-on suggested here
I would back up the profile, before letting something
like this run.
http://helpdeskgeek.com/how-to/remove-dead-and-duplicate-bookmarks-from-firefox/
I don't really see the point in doing this, because
you can always go to
www.archive.org, and feed the
bookmark into there, and find an archived copy of
the "dead" link. Links aren't always totally dead,
and if you need the content again, you can find it
later.
Paul