O Universo não é uma idéia minha. A minha idéia do Universo é que é uma idéia minha. A noite não anoitece pelos meus olhos, a minha idéia da noite é que anoitece por meus olhos. Fora de eu pensar e de haver quaisquer pensamentos A noite anoitece concretamente. E o fulgor das estrelas existe como se tivesse peso. Fernando Pessoa
Pesquisar este blog
sábado, 30 de janeiro de 2021
quarta-feira, 27 de janeiro de 2021
Migrando banco de dados Access para SQLite
#0 – Introdução
Um banco de dados Access tem basicamente três artefatos a serem migrados:
o banco de dados em si
formulários
macros que utilizam dados do formulário e manipulam o banco de dados
A primeira opção seria migrar tudo para o Base do OpenOffice. É uma opção válida, que dá menos trabalho para o desenvolvedor (desde que ele saiba utilizar as macros do OpenOffice), mas neste tutorial utilizaremos uma abordagem diferente, assumindo que para o usuário final uma “aplicação pronta” é mais confortável, ou seja, o usuário não precisa saber utilizar o Base (assim como não precisaria saber o Access). Dessa forma também se esconde do usuário detalhes não tão interessantes, como as estruturas das tabelas, e além disso, fica mais fácil garantir a integridade dos dados (evita-se mais facilmente que o usuário altere dados de forma inconsistente).
Uma primeira opção seria migrar o banco de dados para MySQL, e posteriormente fazer o formulário/macros com uma linguagem tipo PHP.
Do ponto de vista do desenvolvedor, isso pode ser bem tranquilo, principalmente pelo fato de a interface gráfica ser feita em HTML.
No entanto, não será muito agradável ao usuário que antes apenas dava dois cliques para o abrir o banco de dados, se ele tiver que agora instalar o apache e configurar o banco de dados!
Então a solução aqui é explorada é o modelo de aplicação stand alone, em que o banco de dados fica armazenado em um mero arquivo, que é acessado por uma aplicação desktop.
Para esta aplicação stand alone o banco de dados escolhido foi o SQLite e a linguagem de programação para manipula-lo Java.
#1 – Exportando o banco
Seja qual for o destino da migração, o primeiríssimo passo é obter a estrutura do banco de dados, ou seja, as tabelas.
Para isso, primeiro:
$sudo apt-get install mdbtools
Para exportar a estrutura do banco de dados basta fazer:
$mdb-schema [banco_de_dados.mdb] > [exportado.sql]
Pronto, a estrutura está salva no arquivo exp.sql em código SQL, que utilizaremos mais tarde.
Neste caso, salvamos apenas a estrutura, mas há formas também de salvar os dados, sendo uma delas:
$mdb-export [banco_de_dados.mdb] [nome_da_datbela] > [exportado.csv ]
Isto gera um arquivo CSV, que nada mais do que uma planilha que pode ser facilmente visualizada no Calc ou mesmo em um editor ASCII (Gedit, Kate etc)
Obs: para saber quais são as tabelas existentes você pode consultar o arquivo SQL gerado ou fazer:
$mdb-tabales [banco_de_dados.mdb]
#2 – Importando o Banco
Agora temos que passar nossas tabelas para uma plataforma livre de banco de dados, no caso SQLite.
Para instalar:
$sudo apt-get install sqlite3
Para importar o banco de dados:
$ sqlite3 [nome_do_banco.sqlite]
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .read [exportado.sql]
Obs: no SQL gerado pelo mdb, há uma linha “DROP TABLE TabelaPrice;” que no nosso caso gerará um erro no sqlite, pois tenta remover uma tabela que não existe.
Uma solução é simplesmente excluir (ou comentar) essa linha antes de realizar a importação.
#3 – Acessando o SQLite no Java
O primeiro passo aqui é obter o conector para o SQLite.
No caso, eu utilizei o conector para o JDBC, que foi baixado em http://www.zentus.com/sqlitejdbc/, e optei pelo arquivo sqlitejdbc-v056.jar.
Bom, para que seu código funcione será necessário adicionar esse jar ao classpath de sua execução.
No Eclipse isto é feito no painel Configure Build Path, que pode ser acessado clicando-se com o botão direito sobre o nome do projeto, na lista de projetos.
No painel do Configure Build Path basta utilizar a opção “add external JAR”.
Pronto, agora podemos programar!
Para testar se o driver está corretamente carregado, podemos fazer:
// Testa o driver
try {
Class.forName("org.sqlite.JDBC");
System.out.println("Driver OK");
} catch (ClassNotFoundException e1) {
System.out.println("Driver não encontrado");
e1.printStackTrace();
}
Um vez que isto esteja OK, finalmente vamos no conectar ao banco de dados, dessa forma:
Connection con = DriverManager.getConnection("jdbc:sqlite:banco_de_dados.sqlite");
A classe Connection faz parte do pacote java.sql.
No exemplo dado estamos passando o caminho relativo do banco de dados, mas também podemos passar o absoluto dessa forma:
Connection con = DriverManager.getConnection("jdbc:sqlite:file:/home/leo/banco_de_dados.sqlite");
Agora para finaizar, um exemplo de uma consulta simples:
// consulta
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery("SELECT * FROM Tabela");
while(rs.next()) {
System.out.println("Parcela: " + rs.getInt("ID"));
System.out.println("Juros: " + rs.getString("Nome"));
}
Agora pode-se traduzir a lógica das macros para a linguagem Java.
Um último passo, não abordado neste tutorial seria a construção de uma interface gráfica para o usuário com API Swing.
Tutorial retirado de: https://polignu.org/artigo/migrando-banco-de-dados-access-para-sqlite
Em : 27/01/2021
Criado por: Leonardo Leite