Exportar dados do meu banco Oracle para txt ou csv

Amigos,

Preciso fazer um select no banco para que me traga todas informações da tabela, isso ok.
porem preciso pegar esses valores e salvar como txt ou csv para o usuario abrir isso no bloco de notas ou no excel como preferir.

ja pesquisei javacsv dei uma olhada no que alguns amigos postaram, mas por causa da minha ignorância eu não consegui colocar no meu projeto.

Segue abaixo dois exemplos que peguei na net, se alguem poder me ajudar, confesso que não sei fazer isso e no momento não tenho ninguem aqui para me auxiliar… mas ha um tempo atras eu não sabia fazer upload de fotos aprendi com alguma dicas de vocês e quando deu certo postei a solução para ajudar os proximos…por favor me ajudem.


package br.gov.sp.saobernardo.sehab.mail;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import java.sql.*;

import br.gov.sp.saobernardo.sehab.util.ContextOracle;

public class JRXlsExporter {
	
	public boolean ExportarXls; {

	
	try {  
	    StringBuffer contenu; //// acho que seria melhor usar o StringBuilder  
	    contenu = new StringBuffer("");  
	    String sql = "select * from tab_caracterizacao";
		Statement st = ContextOracle.getInstance().createStatement();
		ResultSet rs = st.executeQuery(sql);
	    ResultSetMetaData rsMeta = rs.getMetaData();  
	    for(int i = 1; i<=rsMeta.getColumnCount(); i++){  
	        contenu.append(rsMeta.getColumnLabel(i)+"\t"); /// nesta linha imprime somente os nome dos campos da tabela  
	    }  
	    contenu.append("\n"); // e temos que colocar todos os dados no StringBuffer  
	    rs.beforeFirst();  
	    while(rs.next()){  
	        for(int i = 1; i<=rsMeta.getColumnCount(); i++){  
	            contenu.append(rs.getString(i)+"\t"); /// aqui mostra todos os dados  
	        }  
	        contenu.append("\n");   
	  
	    } //fim do while  
	    //agora, salvando o StringBuffer no arquivo  
	    FileWriter excelFile = new FileWriter("d:/myResultSet.xls"); // nome do arquivo  
	    excelFile.write(new String(contenu)); //aqui ele passa a String para salvar  
	    excelFile.close();  
	   
	} catch (Exception ex) {  
	    ex.printStackTrace();  
	}  
	 
	}
}
package br.gov.sp.saobernardo.sehab.mail;

import java.io.*;  
import java.sql.*;  
import java.util.*;  

import br.gov.sp.saobernardo.sehab.util.ContextOracle;
  
public class GeraRelatórioXls {  
  
    public static void main(String[] args) {  
        generateCsvFile("c:/test.csv");  
  
    }  
  
    private static void generateCsvFile(String filename) {  
        DatabaseMetaData dbMetaData = null;  
        String columnNameQuote = "";  
        try {  
//            Class.forName("oracle.jdbc.driver.OracleDriver");  
//            String url = "jdbc:oracle:thin:@//hostname:portno/sid";  
//            Connection conn = DriverManager.getConnection(url, "username",  
//                    "password");  
           // conn.setAutoCommit(false);  
            Statement stmt = ContextOracle.getInstance().createStatement();
            ResultSet rset = stmt.executeQuery("select * from tab_caracterizacao");  
            ResultSetMetaData rsmd = rset.getMetaData();  
            rset.next();  
            FileWriter fname = new FileWriter(filename);  
            BufferedWriter bwOutFile = new BufferedWriter(fname);  
            StringBuffer sbOutput = new StringBuffer();  
            sbOutput.append("SKU_CODE,SKU_UPC,LIST_PRICE,SALE_PRICE");  
            bwOutFile.append(sbOutput);  
            bwOutFile.append(System.getProperty("line.separator"));  
            System.out.println("No of columns in the table:"  
                    + rsmd.getColumnCount());  
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {  
                String  cname = rsmd.getColumnName(i);  
                     
            }  
              
              
            System.out.println();  
            while (rset.next()) {  
                System.out.println(rset.getString(1) + " " + rset.getString(2)  
                        + " " + rset.getString(3) + " " + rset.getString(4));  
                bwOutFile.append(rset.getString(1) + "," + rset.getString(2) + "," + rset.getString(3) + "," + rset.getString(4));  
                bwOutFile.append(System.getProperty("line.separator"));  
                bwOutFile.flush();  
                  
            }  
            bwOutFile.close();  
            stmt.close();  
            System.out.println("Ok.");  
        }  
  
        catch (Exception e) {  
            System.err.println("Unable to connect to database: " + e);  
  
        }  
  
    }  
}  

Desde ja agradeço a atenção e as dicas

Rodrigo

  • Faz o select
  • Monta os dados de cada linha retornada em uma String, separados por “;”
  • Adiciona essa String em uma Lista;
  • Faz isso até terminar de formatar todas linhas retornadas pelo SELECT
  • Salva o arquivo com extensão TXT ou CSV

Onde realmente está sua dificuldade?

Ola ul1sses,

Obrigado pela atenção, segue abaixo minhas dificuldades.

  • Faz o select OK ISSO EU JA FIZ… SEGUE O EXEMPLO ABAIXO
public arraylist<caracterizacaobean> consultar() {

		arraylist<caracterizacaobean> arraycaracterizacao = new arraylist<caracterizacaobean>();

		string sql = "select * from tab_caracterizacao";

		try {
			statement st = contextoracle.getinstance().createstatement();

			resultset rs = st.executequery(sql);

			caracterizacaobean bean = null;

			while (rs.next()) {
				bean = new caracterizacaobean();

				bean.setcodfunep(rs.getstring("cod_funep"));
				bean.setcodregiaoop(rs.getstring("regiao_op"));
				bean.setnomearea(rs.getstring("nome_area"));
				bean.setcodvulnerabilidade(rs.getstring("cod_vulnerabilidade"));
				bean.setcodlocalizacao(rs.getstring("localizacao"));
				bean.setnumuhsmapeadas(rs.getstring("num_uhs_mapeadas"));
				bean.setnumuhsmapeadaspercentual(rs
						.getstring("num_uhs_mapeadas_percentual"));
				bean.setcodtipologia(rs.getstring("cod_tipologia"));
				bean.setcodmanancial(rs.getstring("manancial"));
				bean.setcodtipoassentamento(rs
						.getstring("cod_tipo_assentamento"));
				bean.setcadunidades(rs.getstring("unidades_cadastradas"));
				bean.setclassgeral(rs.getstring("classificacao_geral"));
				bean.sethierarquizacao(rs.getstring("hierarquizacao_programa"));
				bean.setdataocupacaodoc(rs.getstring("data_ocupacao_doc"));
				bean.setdataocupacaoentrevista(rs
						.getstring("data_ocupacao_entrevista"));
				bean.setcodestagio(rs.getstring("estagio"));
				bean.setcodzoneamento(rs.getstring("cod_zoneamento"));
				bean.setcodfeicaomorfologica(rs.getstring("feicao_morfologica"));
				// bean.setcodregfund(rs.getstring("cod_reg_fund"));
				bean.setcaracfiscourban(rs
						.getstring("caracterizacao_fisico_urbano"));
				// bean.sethierarquizacao(rs.getstring("hierarquizacao"));
				bean.setobssituacaopropriedade(rs
						.getstring("observacao_situacao_prop"));
				bean.setcodgravamesjudiciais(rs.getstring("gravames_judiciais"));
				bean.setobsjudicial(rs.getstring("observacoes_judiciais"));

				arraycaracterizacao.add(bean);

			}
			st.close();
			rs.close();

		} catch (sqlexception sqlex) {
			sqlex.printstacktrace();
		}
		return arraycaracterizacao;
	}
  • Monta os dados de cada linha retornada em uma String, separados por “;” SE PODE ME EXPLICAR MELHOR ESSE ITEM
  • Adiciona essa String em uma Lista;
  • Faz isso até terminar de formatar todas linhas retornadas pelo SELECT
  • Salva o arquivo com extensão TXT ou CSV ISSO EU NÃO SEI FAZER, NÃO SEI SE É FILE OU CSVWRITE

Você vai iterar sob os elementos da lista arraycaracterizacao. Por exemplo:

StringBuilder sb = new StringBuilder();
		
for (caracterizacaobean bean : arraycaracterizacao) {
    sb.append(processaObjeto(bean) + "\n");
}
		
OutputStream os = new FileOutputStream("caminhoarquivo/arquivo.csv"); // ou txt
os.write(sb.toString().getBytes());
os.flush();
os.close();

Esse método processa um objeto caracterizacaobean:

public String processaObjeto(caracterizacaobean bean) {
    StringBuilder sb = new StringBuilder();
    sb.append(bean.getAtributo1());
    sb.append(";");
    bean.getAtributo2();
    sb.append(";");
    bean.getAtributo3();
			
    return sb.toString();
}

Verifica ai , complemente e diga se houver dúvidas.

ul1sses, obrigado cara…

se eu quiser colocar o nome das colunas eu coloco no metodo processaobejetos?