Amarok – Convertendo SQLite para MySQL


Ocorre que um dia resolvi testar meu favorito tocador de música digital usando a base de dados MySQL, é padrão do Amarok usar a base de dados SQLite, pois é claro, ela não necessita de ajustes do usuário e é salva em um arquivo .DB dentro do diretório de configuração do Amarok, fácil de trabalhar e manipular, no entanto, as consultas feitas nela levam muito mais tempo que em base de dados MySQL ou PostgreSQL, para quem só quer ouvir música e não se importa com o desempenho o SQLite é perfeito, mas, este não é meu caso, usei Slackware Linux por quatro anos em meu Desktop e tudo que eu fazia era compilar, compilar e compilar, sempre tentando extrair o máximo de performance do meu Hardware, se é também seu caso vamos para o passo-a-passo.

Abra seu editor de textos favorito e um terminal, com o terminal vá até o diretório: ~/.kde/share/apps/amarok com o comando:

cd ~/.kde/share/apps/amarok

se você listar os arquivos deste diretório terá uma estrutura semelhante à esta:

Veja que marquei um arquivo chamado collection.db, é nele que ficam os dados que precisamos pegar, então faremos da seguinte forma: separaremos os dados da estrutura do banco de dados e em seguida enviaremos isto por um pipe (|) para o MySQL, parece difícil, mas, é muito simples.

Execute seu MySQL em um terminal e crie um banco de dados chamado amarok e dê ao usuário amarok todas as permissões, como mostrado a seguir:

$ mysql -p -u root

mysql> CREATE DATABASE amarok;

mysql> USE amarok;

mysql> grant all privileges on base.amarok to amarok@localhost;

Se você abrir o Amarok agora e informar em Configurações/Coleção que deseja usar como base de dados o MySQL ao invés do SQLite o Amarok irá criar uma estrutura semelhante à seguinte, porém faltarão algumas tabelas, e isto pode causar vários erros ao importar os dados do SQLite para o MySQL.

A maior parte dos manuais e artigos pela internet dizem para fazer isto, mas, vamos seguir outro caminho, vamos extrair a estrutura que está dentro do arquivo ~/.kde/share/apps/amarok/collection.db, desta forma você não corre risco de tentar inserir dados em uma tabela que possivelmente possa não existir.

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

sqlite3 collection.db .dump > amarok.sql

Este comando irá 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.

No meu caso, o arquivo resultante ficou com pouco mais de 9MB e pouco mais de 100.000 linhas.

Se você abriu 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 ele no editor de textos e você verá que ele somente tem inserções, mas, onde será inserido? Pois 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 você de maneira alguma pode ter iniciado o Amarok, pois ele iria criar a estrutura e então você teria algumas mensagens de erro.

Passe o seguinte comando no terminal para criar a estrutura e inserir os dados respectivamente na base MySQL.

cat amarok_estrutura.sql | mysql -u root -p amarok && \

cat amarok_dados.sql | mysql -u root -p amarok

Se ocorrer algum erro com uma mensagem semelhante à seguinte: “ERROR 1062 (23000) at line 5298: Duplicate entry ‘./*** ‘ for key 1 ”

Você terá que abrir o arquivo amarok_dados.sql e encontrar a linha duplicada e remove-la manualmente, no caso acima, a linha que deve ser removida é a 5298, e em seguida você deverá remover toda a estrutura do banco de dados amarok e fazer este ultimo processo novamente.

Um simples comando no MySQL é bastante:

DROP TABLE `admin` , `album` , `amazon` , `artist` , `composer` , `devices` , `directories` , `embed` , `genre` , `images` , `labels` , `lyrics` , `magnatune_albums` , `magnatune_artists` , `magnatune_tracks` , `playlists` , `podcastchannels` , `podcastepisodes` , `podcastfolders` , `related_artists` , `statistics` , `tags` , `tags_labels` , `uniqueid` , `year` ;

Assim que enviar todas as informações para o MySQL, abra o Amarok e escaneie toda a sua coleção.

Se ainda assim tiver problemas com o Dump da estrutura você pode baixar um aplicativo chamado sqlitebrowser, que está hospedado no SourceForge, para usuários do Ubuntu 8.04 basta acessar este link <apt://sqlitebrowser> para a instalação do sqlbrowser, para outros http://sourceforge.net/projects/sqlitebrowser/

Anúncios

, , , ,

  1. Deixe um comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

  • Follow Carl Roberson's on WordPress.com
  • Fallow me
  • Linux 20 Anos
  • Ubuntu LTS Trusty Tahr

    Lançamento da versão LTS do Ubuntu20 de abril de 2014
    Ubuntu LTS Trusty Tahr Chegou!!! http://www.ubuntu.com/download/desktop
  • Grafica Livre

  • O que estou lendo agora

  • Na minha estante me aguardando


    Literatura
  • Bookmark and Share
%d blogueiros gostam disto: