Amarok: migrando de SQLite para MySQL

O Amarok usa o SQLite como gerenciador de banco de dados padrão, mas não satisfeito resolvi testar meu tocador de música digital favorito no MySQL. Este artigo descreve a solução para tal caso.

[ Hits: 25.508 ]

Por: Roberson Carlos em 03/10/2008 | Blog: http://carlrobers.wordpress.com


Fazendo o dump de collection.db



O primeiro passo será coletar todas as informações que estão no arquivo collection.db, para isto faça:

sqlite3 collection.db .dump > amarok.sql

Este comando criará um dump do banco de dados SQLite e direcionará o mesmo pelo sinal de maior ">" para o arquivo de texto "amarok.sql". Abra este arquivo com o editor e veja a estrutura completa da base de dados.
Linux: SQLite 2 MySQL no Amarok
Linux: SQLite 2 MySQL no Amarok
No meu caso o arquivo ficou com pouco mais de 9MB e pouco mais de 100.000 linhas. Se você abrir o arquivo verá que a estrutura tem alguns parâmetros que o MySQL desconhece. Agora vamos remover as linhas desnecessárias e criar o arquivo com os dados.

cat amarok.sql | grep -v "INSERT INTO admin" | \
perl -pe 's/INSERT INTO \"(.*)\" VALUES/INSERT INTO \1 VALUES/' > amarok2.sql

$ cat amarok2.sql | \
grep -v "BEGIN TRANSACTION;" | \
grep -v "COMMIT;" | \
grep -v "CREATE TABLE" | \
grep -v "INSERT INTO directories VALUES" | \
grep -v "CREATE INDEX" | \
grep -v "CREATE UNIQUE INDEX" > amarok_dados.sql


Deste comando resultará um arquivo chamado "amarok_dados.sql", abra-o no editor de textos e verá que ele somente tem inserções, mas onde será inserido? As tabelas ainda não foram criadas! Para criar a estrutura do banco de dados passe o seguinte comando:

cat amarok.sql | \
grep -v "BEGIN TRANSACTION;" | \
grep -v "COMMIT;" | \
grep -v "INSERT INTO" > amarok_estrutura.sql


e o comando a seguir para evitar o erro: "ERROR 1071 (42000) at line 7: Specified key was too long; max key length is 1000 bytes":

replace "VARCHAR(1024)" "VARCHAR(996)" -- amarok_estrutura.sql
$ replace "VARCHAR(256)" "VARCHAR(255)" -- amarok_estrutura.sql


Agora abra o arquivo resultante do comando, o amarok_estrutura.sql, e todas as linhas que não iniciarem com CREATE UNIQUE INDEX, CREATE TABLE e CREATE INDEX você deve apagar, ou melhor dizendo, tudo que não iniciar com CREATE você deve apagar.

Salve o arquivo e estamos prontos para inserir a estrutura e os dados. Lembre-se que durante os passos de maneira alguma você pode ter iniciar o Amarok, senão ele criará a estrutura e então você terá algumas mensagens de erro.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Fazendo o dump de collection.db
   3. Pipe para o MySQL
Outros artigos deste autor

VNC - Virtual Network Computing

Desmistificando o Linux Loader (LILO)

Modem 3G no Ubuntu Linux 8.04 - Qualquer operadora

Gravação de CDs com o K3B

Registrando extensões no kernel com o binfmt_misc

Leitura recomendada

SQL Dicas & Truques (versão 0.1)

Sincronização segura entre bancos de dados MySQL utilizando SJA

MariaDB + phpMyAdmin no Ubuntu 12.04 LTS

OpenOffice + ODBC + MYSQL

Administrando bancos MySQL com phpMyAdmin

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts