Pesquisar no site de suporte

Evite golpes de suporte. Nunca pedimos que você ligue ou envie uma mensagem de texto para um número de telefone, ou compartilhe informações pessoais. Denuncie atividades suspeitas usando a opção “Denunciar abuso”.

Learn More

Manipular o banco de dados do Histórico em SQL

  • 1 resposta
  • 1 tem este problema
  • 77 visualizações
  • Última resposta de Gab Arito

more options

Olá, pessoal.

Alguém aqui entende um pouco do banco de dados do Firefox? Eu falo do banco local, padrão SQL-Lite. É que pretendo juntar o Histórico de vários perfis diferentes numa única base de dados. O arquivo "places.sqlite", que fica na pasta raiz de cada perfil deve armazenar esse histórico. Como "appendar" todos os registros num único banco? Caso haja algumas duplicidades, qual o comando SQL para removê-las?

Tenho também instalado o SQLiteBrowser. O que me falta é a familiaridade com a manipulação de registros nos bancos.

Explicando melhor, eu não pretendo sobrepor arquivos em pastas. Todos os arquivos das pastas de perfil ficarão intactas. Eu não quero abrir essas tabelas no Firefox. Até poderia depois de "appendar" tudo, mas essa não é a intenção. Eu queria apenas juntar todos os históricos e favoritos num único banco e remover as possíveis duplicidades. Para isso, eu preciso conhecer os comandos SQL para manipular direitinho esses arquivos, com "append", com "purge", com "index", etc. Por não dominar o SQL, procuro alguém que entenda mais do que eu para me dar o caminho.

Não estou bem certo, mas parece que o arquivo favicons.sqlite também deve ser envolvido nas manipulações. Vi que são inúmeras as tabelas de um de outro. Eu teria que escrever comandos SQL para dividir os bancos mês a mês.

Alguma ideia?


Anexo à essa pergunta, envio a estrutura de tabelas de "places.sqlite" e de "favicons.sqlite":

Olá, pessoal. Alguém aqui entende um pouco do banco de dados do Firefox? Eu falo do banco local, padrão SQL-Lite. É que pretendo juntar o Histórico de vários perfis diferentes numa única base de dados. O arquivo "places.sqlite", que fica na pasta raiz de cada perfil deve armazenar esse histórico. Como "appendar" todos os registros num único banco? Caso haja algumas duplicidades, qual o comando SQL para removê-las? Tenho também instalado o SQLiteBrowser. O que me falta é a familiaridade com a manipulação de registros nos bancos. Explicando melhor, eu não pretendo sobrepor arquivos em pastas. Todos os arquivos das pastas de perfil ficarão intactas. Eu não quero abrir essas tabelas no Firefox. Até poderia depois de "appendar" tudo, mas essa não é a intenção. Eu queria apenas juntar todos os históricos e favoritos num único banco e remover as possíveis duplicidades. Para isso, eu preciso conhecer os comandos SQL para manipular direitinho esses arquivos, com "append", com "purge", com "index", etc. Por não dominar o SQL, procuro alguém que entenda mais do que eu para me dar o caminho. Não estou bem certo, mas parece que o arquivo favicons.sqlite também deve ser envolvido nas manipulações. Vi que são inúmeras as tabelas de um de outro. Eu teria que escrever comandos SQL para dividir os bancos mês a mês. Alguma ideia? Anexo à essa pergunta, envio a estrutura de tabelas de "places.sqlite" e de "favicons.sqlite":
Capturas de tela anexadas

Solução escolhida

Olá, pessoal.

Voltei aqui para dizer que consegui realizar o que queria com o histórico do Firefox. E para deixar o caminho para mais alguém que tenha as mesmas necessidades.

Entre outros arquivos, o Firefox mantém o “places.sqlite” na pasta raiz do perfil. Nele, encontramos as tabelas “moz_historyvisits” e a “moz_places” que é onde ficam os registros que mais nos interessam.

Há também o arquivo “favicons” que vai guardar os ícones das URL’s visitadas entre outros dados. Não é tão importante para o nosso caso, mas é bom que ele ande lado a lado de seu respectivo “places.sqlite”.

A correlação das tabelas nos bancos está explicada em anexo (pode estar desatualizada).

A explicação dos campos de “places.sqlite” pode ser encontrada aqui.

Pois bem, para manipular os registros de histórico de várias pastas de perfil, eu usei alguns programas a saber:

1. o próprio Firefox;

2. a ferramenta MZHistoryView, que pode ser encontrada aqui;

3. firefox-history-merger, uma ferramenta CLI (linha de comando) de código aberto hospedada no Github;

4. SQLiteBrowser para compactar bancos que tiveram alguns registros apagados. Pode ser encontrado aqui;

Com o Firefox, eu abri o histórico de cada perfil e apaguei os meses que já existiam em outros perfis. Com o SQLiteBrowser, eu compactei bancos que tiveram registros apagados e também pude inspecionar registros incluídos. Com o firefox-history-merger eu anexei registros de um “places.sqlite” em outros “places.sqlite”. Com o MZHistoryView eu pude acompanhar a quantidade de registros anexados, confirmar os meses correspondentes e ter uma visão mais completa do resultado final. Essa ferramenta não é indispensável para se chegar ao resultado final.

A ferramenta firefox-history-merger também permite reparar ícones perdidos do banco “favicons.sqlite”. Essa ação também não é imprescindível para o resultado final.

Com tudo isso, pude pegar velhos históricos e organizar tudo, eliminando redundância de muitas pastas e arquivos armazenados em perfis. Ficaram apenas arquivos “places.sqlite” enxutos, classificados e sem duplicidades.

Pesquisei sobre a quantidade máxima de registros e vi que talvez conseguisse juntar tudo num só arquivo “places.sqlite”. De acordo com um tópico do SuperUser, isso é possível depois de se ajustar a variável places.history.expiration.transient_current_max_pages para 2147483647, o maior inteiro para 32 bits) em about:config. Não cheguei a testar. Prefiro manter arquivos menores e mais leves.

É isso. Agradeço a atenção de todos e espero ter deixado informação útil a quem mais precisar.

Ler esta resposta 👍 0

Todas as respostas (1)

more options

Solução escolhida

Olá, pessoal.

Voltei aqui para dizer que consegui realizar o que queria com o histórico do Firefox. E para deixar o caminho para mais alguém que tenha as mesmas necessidades.

Entre outros arquivos, o Firefox mantém o “places.sqlite” na pasta raiz do perfil. Nele, encontramos as tabelas “moz_historyvisits” e a “moz_places” que é onde ficam os registros que mais nos interessam.

Há também o arquivo “favicons” que vai guardar os ícones das URL’s visitadas entre outros dados. Não é tão importante para o nosso caso, mas é bom que ele ande lado a lado de seu respectivo “places.sqlite”.

A correlação das tabelas nos bancos está explicada em anexo (pode estar desatualizada).

A explicação dos campos de “places.sqlite” pode ser encontrada aqui.

Pois bem, para manipular os registros de histórico de várias pastas de perfil, eu usei alguns programas a saber:

1. o próprio Firefox;

2. a ferramenta MZHistoryView, que pode ser encontrada aqui;

3. firefox-history-merger, uma ferramenta CLI (linha de comando) de código aberto hospedada no Github;

4. SQLiteBrowser para compactar bancos que tiveram alguns registros apagados. Pode ser encontrado aqui;

Com o Firefox, eu abri o histórico de cada perfil e apaguei os meses que já existiam em outros perfis. Com o SQLiteBrowser, eu compactei bancos que tiveram registros apagados e também pude inspecionar registros incluídos. Com o firefox-history-merger eu anexei registros de um “places.sqlite” em outros “places.sqlite”. Com o MZHistoryView eu pude acompanhar a quantidade de registros anexados, confirmar os meses correspondentes e ter uma visão mais completa do resultado final. Essa ferramenta não é indispensável para se chegar ao resultado final.

A ferramenta firefox-history-merger também permite reparar ícones perdidos do banco “favicons.sqlite”. Essa ação também não é imprescindível para o resultado final.

Com tudo isso, pude pegar velhos históricos e organizar tudo, eliminando redundância de muitas pastas e arquivos armazenados em perfis. Ficaram apenas arquivos “places.sqlite” enxutos, classificados e sem duplicidades.

Pesquisei sobre a quantidade máxima de registros e vi que talvez conseguisse juntar tudo num só arquivo “places.sqlite”. De acordo com um tópico do SuperUser, isso é possível depois de se ajustar a variável places.history.expiration.transient_current_max_pages para 2147483647, o maior inteiro para 32 bits) em about:config. Não cheguei a testar. Prefiro manter arquivos menores e mais leves.

É isso. Agradeço a atenção de todos e espero ter deixado informação útil a quem mais precisar.

Alterado por Gab Arito em