Bom dia a todos, sei que esse tópico tem no GUJ, mas não específico com o netbeans e o tamanho do arquivo que estou pegando.
Seguinte, preciso subir no banco esse arquivo txt que vai de 150MB a 3Gigas e está dando erro de "java.lang.OutOfMemoryError: Java heap " vou colocar o código para que todos tenham ideia do que estou fazendo e preciso!
Tem alguma solução para pegar arquivos GRANDES, como fazer?!
gratos a todos que puderem colaborar
Aqui o código
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author E449045
*/
public class ImportNrcInfos {
public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException {
File file = new File("c:/teste/NRC_INFOS_20110801.txt"); // o path do arquivo, ex.: "C:\Importacao.txt"
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
// File file = new File(new BufferedReader(new FileReader("c:/teste/NRC_INFOS_20110801.txt")));
//sqljdbc/sqljdbc4/jtds-1.2
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager.getConnection("jdbc:sqlserver://SRV_RG:1433;databaseName=BASES","pa","****");
System.out.println("conectado");
Statement stmt = (Statement) connection.createStatement();
List<Infos> listLivros = new ArrayList<Infos>();
while (bufferedReader.ready()) {
String linha = bufferedReader.readLine(); // lê uma linha...
String[] arrayDados = linha.split("\t"); // separa os dados por seu delimitador...
Infos livro = new Infos();
livro.setPRODUTO_COMERCIAL(arrayDados[0]);
livro.setNRC(arrayDados[1]);
livro.setSISTEMA(arrayDados[2]);
livro.setSEGMENTO(arrayDados[3]);
livro.setCLASSE(arrayDados[4]);
livro.setTERMINAL(arrayDados[5]);
livro.setLOCALIDADE(arrayDados[6]);
livro.setCD_CLIENTE(arrayDados[7]);
livro.setCD_CONTA(arrayDados[8]);
livro.setCD_PC(arrayDados[9]);
livro.setTP_PRTE(arrayDados[10]);
livro.setDT_INI_PRQE(arrayDados[11]);
livro.setDT_FIM_PRQE(arrayDados[12]);
livro.setDT_INS_PRQE(arrayDados[13]);
livro.setDT_RET_PRQE(arrayDados[14]);
livro.setDH_PRTE(arrayDados[15]);
livro.setIN_MGRO_ATIS_IN(arrayDados[16]);
livro.setIN_MGRO_ATIS_AC(arrayDados[17]);
livro.setIN_MGRO_ATIS_FA(arrayDados[18]);
livro.setIN_MGRO_ATIS_CO(arrayDados[19]);
listLivros.add(livro);
}
System.out.println("------------------------------------");
for (Infos livro : listLivros) {
String sentenca = "insert into dbo.NRC_INFOS_201108(PRODUTO_COMERCIAL,NRC,SISTEMA,SEGMENTO,CLASSE,TERMINAL,LOCALIDADE,"
+ "CD_CLIENTE,CD_CONTA,CD_PC,TP_PRTE,DT_INI_PRQE,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 statementInsert = connection.prepareStatement(sentenca);
statementInsert.setString(1, livro.getPRODUTO_COMERCIAL());
statementInsert.setString(2, livro.getNRC());
statementInsert.setString(3, livro.getSISTEMA());
statementInsert.setString(4, livro.getSEGMENTO());
statementInsert.setString(5, livro.getCLASSE());
statementInsert.setString(6, livro.getTERMINAL());
statementInsert.setString(7, livro.getLOCALIDADE());
statementInsert.setString(8, livro.getCD_CLIENTE());
statementInsert.setString(9, livro.getCD_CONTA());
statementInsert.setString(10, livro.getCD_PC());
statementInsert.setString(11, livro.getTP_PRTE());
statementInsert.setString(12, livro.getDT_INI_PRQE());
statementInsert.setString(13, livro.getDT_FIM_PRQE());
statementInsert.setString(14, livro.getDT_INS_PRQE());
statementInsert.setString(15, livro.getDT_RET_PRQE());
statementInsert.setString(16, livro.getDH_PRTE());
statementInsert.setString(17, livro.getIN_MGRO_ATIS_IN());
statementInsert.setString(18, livro.getIN_MGRO_ATIS_AC());
statementInsert.setString(19, livro.getIN_MGRO_ATIS_FA());
statementInsert.setString(20, livro.getIN_MGRO_ATIS_CO());
statementInsert.execute();
// statementInsert.executeUpdate();
//stmt.executeUpdate(sentenca);
}
connection.commit();
System.out.println(listLivros);
}
}
O Erro!