寻找了一段时间后,我决定手动修复places.sqlite Firefox 的书签数据库。
在下载了一个 sqlite3 客户端之后,当然还有备份了我的 places.sqlite 文件我带着这些查询来了。
就我而言,我并不是特别了解与书签相关的描述、关键字或任何元数据。
1-创建一个id->文件夹名称的辅助表:
CREATE TABLE ufld AS
SELECT min(id) AS id, title
FROM moz_bookmarks
group by title
order by title;
2- 创建另一个辅助表,其中每个书签都有其父文件夹名称和 ufld 名称(如果您想先检查的话,列比需要的多):
CREATE TABLE bkm_fld_ufld AS
SELECT
b.id AS bid,
b.parent AS bparent,
b.title AS btitle,
b.type AS btype,
fld.id AS fid,
fld.parent AS fparent,
fld.title AS ftitle,
fld.type AS ftype,
ufld.id AS ufldid,
ufld.title AS ufldtitle
FROM moz_bookmarks b
JOIN moz_bookmarks fld ON
fld.id = b.parent
JOIN ufld ON
ufld.title = fld.title;
3- 使用辅助表更新书签(省略“特殊文件夹”):
UPDATE moz_bookmarks
SET parent = (SELECT bkm_fld_ufld.ufldid
FROM bkm_fld_ufld
WHERE bkm_fld_ufld.bid = moz_bookmarks.id)
WHERE guid NOT GLOB '*___';
4- 清理:
DROP table ufld;
DROP table bkm_fld_ufld;
就是这样,现在我可以将 Firefox 个人资料文件夹中的 places.sqlite 复制回来,享受刷新和清理的书签。
如果有人想出更好的方法来做到这一点,我听说...
Firefox 同步更新
如果启用了 Firefox 同步,它会尝试在修改 places.sqlite 文件之前恢复标签页。
解决方法是:
- 从 Firefox Sync 断开 Firefox
- 如前所述修复
places.sqlite
- 将固定书签导出到文件
- 连接到 Firefox Sync 并等待它完成它的工作
- 删除所有书签
- 恢复固定书签的备份文件
Voilà... Firefox Sync 现在正在使用固定书签同步您所有连接的设备