如何 "delete empty bookmark folders" 或 "merge duplicate folders"
How to "delete empty bookmark folders" or "merge duplicate folders"
在使用 XMarks+Firefox+Chrome+Android 多次出现错误的同步体验后,我的书签文件夹完全乱七八糟:我有重复的文件夹名称,很多但不是全部都是空的。
我不久前停止使用 Xmarks,显然是为了防止它破坏东西。我不知道有多少书签不见了...Xmarks 有一个方便的书签同步历史记录,但是从那里修复所有东西太麻烦了(没有自动方式)
我正在考虑手动编辑 places.sqlite
书签数据库...
找了一段时间后,我决定手动修复 places.sqlite
Firefox 的书签数据库。
下载 sqlite3 客户端后,当然 备份我的 places.sqlite 文件 我提出了这些问题。
就我而言,我并不是特别了解与书签相关的描述、关键字或任何元数据。
1- 创建一个辅助table 有一个id->文件夹名称:
CREATE TABLE ufld AS
SELECT min(id) AS id, title
FROM moz_bookmarks
group by title
order by title;
2- 创建另一个辅助 table,其中每个书签都有其父文件夹名称及其 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- 使用辅助 tables 更新书签(省略 'special folders'):
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 Sync,那么它会尝试将选项卡恢复到修改 places.sqlite
文件之前的状态。
解决方法是:
- 断开 Firefox 与 Firefox Sync 的连接
- 如前所述修复
places.sqlite
- 将固定书签导出到文件
- 连接到 Firefox Sync 并等待它完成它的工作
- 删除所有书签
- 恢复固定书签的备份文件
瞧...Firefox Sync 现在正在将您所有连接的设备与固定书签同步
在使用 XMarks+Firefox+Chrome+Android 多次出现错误的同步体验后,我的书签文件夹完全乱七八糟:我有重复的文件夹名称,很多但不是全部都是空的。
我不久前停止使用 Xmarks,显然是为了防止它破坏东西。我不知道有多少书签不见了...Xmarks 有一个方便的书签同步历史记录,但是从那里修复所有东西太麻烦了(没有自动方式)
我正在考虑手动编辑 places.sqlite
书签数据库...
找了一段时间后,我决定手动修复 places.sqlite
Firefox 的书签数据库。
下载 sqlite3 客户端后,当然 备份我的 places.sqlite 文件 我提出了这些问题。
就我而言,我并不是特别了解与书签相关的描述、关键字或任何元数据。
1- 创建一个辅助table 有一个id->文件夹名称:
CREATE TABLE ufld AS
SELECT min(id) AS id, title
FROM moz_bookmarks
group by title
order by title;
2- 创建另一个辅助 table,其中每个书签都有其父文件夹名称及其 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- 使用辅助 tables 更新书签(省略 'special folders'):
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 Sync,那么它会尝试将选项卡恢复到修改 places.sqlite
文件之前的状态。
解决方法是:
- 断开 Firefox 与 Firefox Sync 的连接
- 如前所述修复
places.sqlite
- 将固定书签导出到文件
- 连接到 Firefox Sync 并等待它完成它的工作
- 删除所有书签
- 恢复固定书签的备份文件
瞧...Firefox Sync 现在正在将您所有连接的设备与固定书签同步