Exportar e importar!

6 respostas
A

Alguém tem idéia de como posso fazer pela aplicação, para pegar 2 colunas de um banco de dados access e inserir elas em 2 do MySQL, eu só preciso do algoritmo e das instruções sql, criar conexão e tals…eu consigo…

Valew

6 Respostas

fcmartins

Faça um SELECT dos dados e monte um INSERT(ou UPDATE):

// Abra as conexões, trate as exceções
...
Statement stmtAccess = connAccess.createStatement();
Statement stmtMySQL = connMySQL.createStatement();

String resultado1 = "";
String resultado2 = "";
String sqlMySQL = "";

String sqlAccess = "SELECT coluna1, coluna2 FROM tabela_access";
ResultSet rsAccess = stmt.executeQuery(sqlAccess);

while (rsAccess.next()) {
  resultado1 = rsAccess.getString(coluna2);
  resultado2 = rsAccess.getString(coluna1);
  sqlMySQL = "INSERT INTO tabela_mysql(nome_coluna1, nome_coluna2) VALUES (" + resultado1 + ", " + resultado2 + ")";
  stmtMySQL.executeUpdate(sqlMySQL );
}
stmtAccess.close();
stmtMySQL.close();
rsAccess.close();
...
// Feche as conexões, termine de tratar as exceções

No geral é isso, corrija e adapte ao seu uso. 8)

A

OK,

Vou fazer aqui e ver o que rola, valewwwwwww

A

Então eu fiz o seguinte

import java.sql.*;

public class Exporta{
	
	Connection connAccess;
	Connection connMySQL;
	Statement stmtAccess;
	Statement stmtMySQL;

	public Exporta(){
		String url = "jdbc:odbc:fasp";
		String login = "Java";
		String senha = "java";

		String urlmysql	= "jdbc:mysql://127.0.0.1:3306/fasp";
		String loginmysql = "";
		String senhamysql = "";
		try {
			
			Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
			connAccess = DriverManager.getConnection( url, login, senha );
			stmtAccess = connAccess.createStatement();
		
			Class.forName( "com.mysql.jdbc.Driver" );
			connMySQL = DriverManager.getConnection( urlmysql, loginmysql, senhamysql );
			stmtMySQL = connMySQL.createStatement();
		}
		catch( ClassNotFoundException ref )
		{
			System.err.println( "Falha ao carregar o driver JDBC/ODBC" );
			System.exit( 1 );
		}

		catch( SQLException sq )
		{
			System.err.println( "Impossível conectar" );
		}

		exportando();
	}

	public void exportando()
	{
		try {

			String resultado1 = "";
			String resultado2 = "";
			String sqlMySQL = "";

			String sqlAccess = "SELECT nome, idade FROM fasp";
			ResultSet rsAccess = stmtAccess.executeQuery(sqlAccess);

			while (rsAccess.next()) {
	  			resultado1 = rsAccess.getString("nome");
	  			resultado2 = rsAccess.getString("idade");
	  			
	  			sqlMySQL = "INSERT INTO fasp(Nome, Idade) VALUES (" + resultado1 + ", " + resultado2 + ")";
	  			
	  			stmtMySQL.executeUpdate(sqlMySQL );
			}
			stmtAccess.close();
			stmtMySQL.close();
			rsAccess.close();

		}
		catch( SQLException sq )
		{
			sq.printStackTrace();
		}
	}

	public void fechar()
	{
		try {
			connAccess.close();;
			connMySQL.close();;
		}
		catch( SQLException sq )
		{
			System.err.println( "Impossivel desconectar" );
		}
	}

	public static void main( String args[] )
	{
		final Exporta ba = new Exporta();
	}
}
Mas estou pegando o seguinte erro

Exception in thread main java.lang.NullPointerException

at Exporta.exportando(Exporta.java:59)

at Exporta.<init>(Exporta.java:39)

at Exporta.main(Exporta.java:86)

Para ajudar a linah 59 é “stmtMySQL.executeUpdate(sqlMySQL );” o que pode ser ??ou melhor porque ele não esta recebendo a conexão ?

V

Provavelmente deve tar rolando alguma Exception, por isso o

connMySQL.createStatement();

não tá retornando uma instância no stmtMySQL e você tá tendo um NullPointerException

A

OK, e como posso resolver isto?

fcmartins

Você pode começar colocando a linha exportando() dentro do try - catch:

try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connAccess = DriverManager.getConnection(url, login, senha); stmtAccess = connAccess.createStatement(); Class.forName("com.mysql.jdbc.Driver"); connMySQL = DriverManager.getConnection(urlmysql, loginmysql, senhamysql); stmtMySQL = connMySQL.createStatement(); exportando(); } catch(ClassNotFoundException ref) { ref.printStackTrace(); System.err.println("Falha ao carregar o driver JDBC/ODBC"); System.exit(1); } catch(SQLException sq) { sq.printStackTrace(); System.err.println("Impossível conectar"); }
do jeito que você fez ele tenta exportar os dados mesmo que dê exceção antes. Coloque um printStackTrace em todas as exceções também, que assim fica mais fácil descobrir em que trecho está o erro.
Além disso, você consultou a API? O método getString retorna null se o campo estiver com valores NULL. Dê uma melhorada no seu código e faça a checagem.

Criado 20 de fevereiro de 2005
Ultima resposta 21 de fev. de 2005
Respostas 6
Participantes 3