Java - como exportar una consulta mysql a un txt

 
Vista:
sin imagen de perfil

como exportar una consulta mysql a un txt

Publicado por joel (5 intervenciones) el 29/09/2016 18:25:05
Hola buen día;
Tengo una duda estoy creando un programa en netbeans, el programa lee archivos .txt y los inserta en una tabla que está en mysql hasta ahí no tengo problemas con eso, el problema es cuando quiero que los datos que están en la tabla de mysql los exporte a un .txt, Ya se crear el txt y guardarlo donde yo quiera pero solo guardo cadenas de texto que yo mismo le paso, este es el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
String saludo="Hola";
JFileChooser guardar = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivos de texto", "txt");
guardar.setFileFilter(filter);
guardar.showSaveDialog(guardar);
File guarda = guardar.getSelectedFile();
if(guarda != null) { // INICIA IF
   try(FileWriter save = new FileWriter(guarda+".txt") )  {	// INICIA TRY
       save.write(saludo);
   } // TERNINA EL TRY
   catch (IOException ex) { // INICIA EN CATCH
       Logger.getLogger(Bienvenido.class.getName()).log(Level.SEVERE, null, ex);
   } //TERMINA CATCH
} // TERMINA EL IF

Con la conexión a la base de datos ya se hacerla y no tengo problema con eso mi problema es como cargar la consulta de la base de datos al .txt (la consulta son los registros de la tabla).

Yo uso este tipo de conexión:

Class.forName("com.mysql.jdbc.Driver");
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/BASE_DATOS","USUARIO", "CONTRASEÑA");
Statement st = conexion.createStatement();
ResultSet registro = st.executeQuery("select * from TABLA");

Alguien me puede ayudar???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

como exportar una consulta mysql a un txt

Publicado por YYanes (144 intervenciones) el 29/09/2016 21:10:49
Hola:

hay un comando SQL que funciona perfectamente en en Postgres, ahora bien, nunca lo he probado en MySql, le diré cuál es y como usarlo, de usted depende ahora probarlo. Es muy sencilo, se llama COPY, he aquí algunos ejemplos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// copiar toda la tabla "myTable" a la dirección especificada creando el fichero "fichero.txt" utilizando como separador (de columnas) el caracter  '|'
 
    copy myTable TO 'C:/prueba/fichero.txt' WITH DELIMITER '|';
 
//----------------------------------------------------------------------
 
//operación inversa al caso anterior: lee los valores del fichero "fichero.txt" de la dirección especificada, y los escribe en la tabla "myTable"
 
    copy myTable FROM 'C:/prueba/fichero.txt' WITH DELIMITER '|';
 
//----------------------------------------------------------------------
//Seguidamente en este ejemplo se copian los valores obtenidos en una consulta, y los guarda en  'D:/fichero.csv' usando el delimitador '|'
 
COPY (select colum1, colum2 from tablaX) to 'D:/fichero.csv'
WITH DELIMITER '|'


Pruébelo en mysql y después me dice si funciona, ¿ok? Le garantizo que en Postgres SÍ funciona perfectamente, pues yo mismo lo he utilizado.
Un GigaSaludo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

como exportar una consulta mysql a un txt

Publicado por drozz (12 intervenciones) el 30/09/2016 01:57:08
con tu objeto resulset... de él es de donde sacas el resultado de la conculta select, en tu caso lo llamas "registro" , te dire como funciona.
puedes hacerlo asi
resultado.next(): regresa un valor booleano si existe un registro siguiente regresa true, si se acabaron los registros regresa false y ademas carga el siguiente registro o row de tu consulta para poder obtener su infirmacion

1
2
3
4
5
6
while(resultado.next()) {
String campo_de_texto = resultado.getString("nombre de la columna");
int campo_numerico = resultado.getInt("nombre de la columna");
 
// puedes ir guardando los valores de las columnas de cada una de las filas del resultado de tu consulta en tu archivo
}

checa la documentacion y ejemplos de como usar objetos resulset
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

como exportar una consulta mysql a un txt

Publicado por joel (5 intervenciones) el 06/10/2016 18:19:48
Hola muchas gracias tu idea me ayudo de mucho pero a hora tengo otro problema cuando guardo los datos en el txt los guarda en una sola línea no me respeta el sato de línea un ejemplo de cómo los deja dentro del txt:

01,85,MARTINEZ SALAZAR ANTONIO,HDGF1509895153,02,86,ROMAN DELAFUENTE HUGO,HDTGF5461,……………..,

Pero quiero que me quede con este formato:

01,85,MARTINEZ SALAZAR ANTONIO,HDGF1509895153,
02,86,ROMAN DELAFUENTE HUGO,HDTGF5461,
.
.
.
// tengo este código:

JFileChooser guardar = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivos de texto", "txt");
guardar.setFileFilter(filter);
guardar.showSaveDialog(guardar);
File guarda = guardar.getSelectedFile();

if(guarda != null){

try(FileWriter save = new FileWriter(guarda+".txt")){

Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/BASE_DATOS","USUARIO", "CONTRASEÑA");
Statement st = conexion.createStatement();
ResultSet registro = st.executeQuery("select * from tabla");
while(registro.next()){

String dato1 = registro.getString("nombre_columna");
String dato2 = registro.getString("nombre_columna");

save.write(dato1);save.write(",");save.write(dato2);save.write(",");save.write(dato3);save.write(",");save.write(dato4);save.write(",");
} }

Aquí es donde pongo el salto de línea:

save.write(dato1);save.write(",");save.write(dato2);save.write(",");save.write(dato3);save.write(",");save.write(dato4);save.write(",\n");// pero no me lo respeta alguien sabe porque no lo respeta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar