如何删除空书签文件夹"或者"合并重复的文件夹"

时间:2017-07-02 18:13:07

标签: firefox firefox-addon bookmarks

在使用XMarks + Firefox + Chrome + Android的许多糟糕的同步体验之后,我的书签文件夹完全搞砸了:我有重复的文件夹名称,很多但不是全部都是空的。

我不久前停止使用Xmarks,显然是为了阻止它破坏事物。我不知道有多少书签消失了...... Xmarks有一个方便的书签同步历史,但从那里修复所有东西太麻烦了(没有自动化方式)

我正在考虑手动编辑places.sqlite书签数据库...

1 个答案:

答案 0 :(得分:1)

在寻找一段时间后,我决定手动修复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 Sync的更新

如果启用了Firefox同步,那么在修改places.sqlite文件之前,它会尝试恢复标签。

解决方法是:

  1. 从Firefox Sync中断开Firefox
  2. 修复places.sqlite,如前所述
  3. 将固定书签导出到文件
  4. 连接到Firefox Sync并等待它执行其操作
  5. 删除所有书签
  6. 恢复固定书签的备份文件
  7. Voilà... Firefox Sync现在正在使用固定书签同步所有连接的设备