Pessoal estou usando o código abaixo para pegar um txt e subir no banco,esse arquivo tem 2giga e esta dando erro de
java.lang.OutOfMemoryError como faço pra resolver esse problema!?
grato a todos
Obs: pesquisei no forum e nao achei a solução!!!
import connectionfactory.telefonica.com.br.ConnectionFactory;
import java.beans.Statement;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class teste {
private static String dt_ciclo;
//private final String dt_ciclo;
// private final String dt_mes_ftra;
// private final String dt_data;
// private final String dt_corte;
public static void main(String[] args) throws InterruptedException, FileNotFoundException, SQLException, IOException, ClassNotFoundException {
try{
System.out.println("Teste");
File file = new File("c:/teste/NRC_INFOS_20111031.txt"); // o path do arquivo, ex.: "C:\Importacao.txt"
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
Connection con = new ConnectionFactory().getConnection();
java.sql.Statement stmt = con.createStatement();
List<Dados> listDados = new ArrayList<Dados>();
while (bufferedReader.ready()) {
String linha = bufferedReader.readLine(); // lê uma linha...
String[] arrayDados = linha.split("\t"); // separa os dados por seu delimitador...
Dados dd = new Dados();
dd.setProduto_comercial(arrayDados[0]);
dd.setNrc(arrayDados[1]);
dd.setSistema(arrayDados[2]);
dd.setSegmento(arrayDados[3]);
dd.setClasse(arrayDados[4]);
dd.setTerminal(arrayDados[5]);
dd.setLocalidade(arrayDados[6]);
dd.setCd_cliente(arrayDados[7]);
dd.setCd_conta(arrayDados[8]);
dd.setCd_pc(arrayDados[9]);
dd.setTp_prte(arrayDados[10]);
dd.setDt_ini_prqe(arrayDados[11]);
dd.setDt_fim_prqe(arrayDados[12]);
dd.setDt_ins_prqe(arrayDados[13]);
dd.setDt_ret_prqe(arrayDados[14]);
dd.setDh_prte(arrayDados[15]);
dd.setIn_mgro_atis_in(arrayDados[16]);
dd.setIn_mgro_atis_ac(arrayDados[17]);
dd.setIn_mgro_atis_fa(arrayDados[18]);
dd.setIn_mgro_atis_co(arrayDados[19]);
listDados.add(dd);
}
System.out.println("------------------------------------");
for (Dados dd : listDados) {
String sql = "insert into nrc_infos_teste(produto_comercial,nrc,sistema,segmento,classe,terminal,localidade,cd_cliente,"
+ "cd_conta,cd_pc,tp_prte,dt_ini_prqe,dt_dt_fim_prqe,dt_ins_prqe,dt_ret_prqe,dh_prte,"
+ "in_mgro_atis_in,in_mgro_atis_ac,in_mgro_atis_fa,in_mgro_atis_co)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement st = con.prepareStatement(sql);
st.setString(0, dd.getProduto_comercial());
st.setString(1, dd.getNrc());
st.setString(2, dd.getSistema());
st.setString(3, dd.getSegmento());
st.setString(4,dd.getClasse());
st.setString(5, dd.getTerminal());
st.setString(6, dd.getLocalidade());
st.setString(7, dd.getCd_cliente());
st.setString(8, dd.getCd_conta());
st.setString(9, dd.getCd_pc());
st.setString(10, dd.getTp_prte());
st.setString(11, dd.getDt_ini_prqe());
st.setString(12, dd.getDt_fim_prqe());
st.setString(13, dd.getDt_ins_prqe());
st.setString(14, dd.getDt_ret_prqe());
st.setString(15, dd.getDh_prte());
st.setString(16, dd.getIn_mgro_atis_in());
st.setString(17, dd.getIn_mgro_atis_in());
st.setString(18, dd.getIn_mgro_atis_in());
st.setString(19, dd.getIn_mgro_atis_in());
st.execute();
st.close();
con.close();
}
con.commit();
System.out.println(listDados);
con.close();
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erro sql" +e);
e.printStackTrace();
}
}
}
