Контекст:
Я использую свой профиль Firefox уже пару лет. Естественно, мой файл истории стал огромным. Я установил Firefox Sync между моим основным настольным ПК и ноутбуком.
HW конфиги:
- ПК: i5-3450, 8 ГБ оперативной памяти DDR3, Crucial M4 128 ГБ SSD
- ноутбук: Pentium SU4100, 4 ГБ оперативной памяти DDR3, жесткий диск WD 5400 об / мин
Доступ к записям истории при наборе в Awesome Bar на моем рабочем столе занимает довольно много времени, несмотря на приличную конфигурацию, но ноутбук работает даже медленнее. Опыт совершенно не отвечает.
Я подумал, что если я немного проясню историю, я мог бы избежать создания нового профиля, чтобы ускорить процесс.
Сам вопрос:
Проиллюстрировать:
Есть ли способ удалить все записи истории, которые были посещены менее чем x (скажем, 5) раз, и в то же время недавнее посещение меньше, чем y (скажем, 120) дней?
afaik файл истории - это какая-то база данных SQL, но я не совсем уверен, как данные сохраняются, если есть «безопасный способ» их редактировать и как будет выглядеть запрос для выполнения того, что мне нужно.
Я продолжал просматривать предыдущие вопросы SuperUser, чтобы посмотреть, смогу ли я найти соответствующую информацию.
В моей директории профиля Firefox есть файл с именем
places.sqlite
. Открытие его с помощью sqlite показывает (среди прочего) таблицыmoz_places
иmoz_historyvisits
. Похоже, чтоmoz_historyvisits
использует основнойmoz_places
для ссылки на URL-адреса.
Поскольку я не знаком с базами данных, я не совсем понимаю, как связаны две таблицы, упомянутые в цитате.
скриншот части таблиц
Я заметил, что visit_count
это в стандартном формате, что облегчает работу с ним. В last_visit_date
выглядит зашифрованы моему невооруженным глазом, но я не могу видеть , в какую сторону.
Надеюсь, что это помогает, я нахожусь в конце моего ума.
источник
Ответы:
С некоторыми исследованиями (см. В конце «ссылки»), я пришел к этому (вроде) простому решению:
BACKUP FIRST. ЗАКРЫТЬ FIREFOX ПЕРВЫЙ
Для этого вам нужно отредактировать базу данных SQLite (автономную базу данных SQL; см. Статью в Википедии ) Mozilla Firefox, выполнив запрос для поиска всех записей, которые удовлетворяют условию (в вашем случае - просматриваются менее 5 раз и не посещаются в последние 120 дней).
BACKUP FIRST. ЗАКРЫТЬ FIREFOX ПЕРВЫЙ
Инструкция начала:
Это работает (проверено и работает с моим Firefox v. 29.0.1). В 12 простых (иш) шагов:
Установить браузер базы данных SQLite
Открой это
Нажмите Открыть базу данных
Перейдите к
C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[PROFILE]
редактированию при необходимостиBACKUP СЛЕДУЮЩИЙ ФАЙЛ ПЕРВЫЙ !!
Откройте
places.sqlite
из каталога, который вы открыли на шаге 4.СЕРЬЕЗНО, BACKUP FIRST !!
Перейдите на вкладку «Выполнение SQL».
Введите это:
Замените
x(2)
на 5 (в вашем примере)Замените
2014-04-01
и2014-05-30
с диапазоном дат вы хотитеНажмите синюю кнопку воспроизведения.
Проверьте правильность отображаемых сайтов (они должны быть, но дважды проверьте!)
Если это так, замените первые две строки приведенного выше кода на:
поэтому ваш код выглядит примерно так:
СДЕЛАННЫЙ! Закройте программу и нажмите «Сохранить» при закрытии.
Инструкции конец
А как насчет
last_visit_date
?Я бы не назвал его «зашифрованным» (хотя я не согласен с тем, что он выглядит зашифрованным). Это просто в другой «системе». Дата находится в системе
Unix
времени (илиEpoch
/POSIX
). Это количество секунд, прошедших с 00:00:00 (UTC) 1 января 1970 года. 1 час - 3600 секунд. 1 год составляет 31556926 дней.Для получения дополнительной информации. посмотрите эту статью в Википедии или этот сайт, который конвертирует время в эпоху и обратно.
Снимки экрана (игнорируйте запросы SQL на этих изображениях, они неправильные. Они в основном говорят вам, где искать)
Благодаря ;):
источник
moz_places
любых записей, которые больше не имеют соответствующихplace_id
.moz_historyvisits
place_id
вmoz_historyvisits
=id
вmoz_places
?moz_historyvists
first (delete from moz_historyvisits as hv left join moz_places as p on hv.place_id = p.id where p.visit_count...
) или 2. после очисткиmoz_places
вы можете удалитьmoz_historyvisits
любую запись, у которой нет соответствующей записи . Я предпочитаю вариант 1 лично. Не используйте его без тестирования; мой SQL довольно ржавый, и я учился с pgsql, а не sqlite. На самом деле вы могли бы удалить из обоих сразу, lemme test.