Pessoal, fiz um programinha em java em modo texto que serve para me ajudar a importar arquivos .sql para banco de dados MYSQL.
Uso esse sistema quando os arquivos sql são muuuito grandes e to com um arquivo sql com 151 Mega :shock:
Mas como o arquivo é muito grande o sistema demora muito pra pega as linhas, tendo como delimitador o ‘;’, entao quero ver se consigo fazer com que o sistema pegue a linha com o insert, execute no BD MYSQL e apague essa linha. Dessa forma, cada vez que ele executar o sql ele vai diminuir o tamanha do arquivo
Tem como faze isso ??
Segue o codigo que tenho atualmente:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;
public class ArquivoDelimitado {
/**
* @param args
*/
public static void main(String[] args) {
String linha = null;
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/resourcespace?user=root&password=");
Statement stm = conn.createStatement();
Scanner sc;
FileInputStream fi;
File f;
String temp="";
double contador = 1;
f = new File("C:\\servidor_apache2\\www\\Estudo\\dados_relac.sql");
fi = new FileInputStream(f);
sc = new Scanner(fi);
while ( sc.hasNextLine() )
{
temp += sc.nextLine();
Thread.currentThread().sleep(100);
if(temp.indexOf(";") >= 0){
// substitui o nome da tabela e das colunas de origem para o nome da tabela e coluna do MYSQL
temp = temp.replace("relac", "relac_escola_prod");
temp = temp.replace("escola", "id_escola");
temp = temp.replace("produto", "id_produto");
if(temp.length() <= 1048576){
System.err.println("Tamanho: "+temp.length());
System.out.println(temp);
/*System.err.println("\nUltima linha: "+contador+"\n");
System.out.println("Retorno da execução: "+stm.executeUpdate(temp));*/
}
else{
System.err.println("Não foi possivel executar.");
}
temp="";
}
if(temp.indexOf("--")>=0){
temp="";
}
contador++;
}
temp = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
Obrigado!