El caso es el siguiente: Se tiene una consulta X, se requiere guardar a un archivo la exportación de la consulta y conocemos el nombre de la tabla de la cual se extrajo la información.
El primer procedimiento era usar las mismas herramientas que proporciona MySQL para llevar a cabo la exportación, solo que no todas las máquinas que usaban el programa se les podia instalar los ejecutables necesarios para llevar éste método; así que se decidió que se hiciera de forma plana (SQL) en archivos de textos importables a la Base de Datos final.
El método que se creo fue el siguiente:
/**De ésta forma se crea un archivo que contiene los inserts correspondientes a la consulta pasada como parámetro.
* Método que crea cadenas insert para cada datos leido de una consulta
* @param entrada Consulta a crear los inserts
* @param archivo Ruta del archivo a escribir
* @param tabla Nombre de la tabla donde se insertaran los datos
* @return Si se pudo o no realizar la conversión
*/
public boolean creaInsert(ResultSet entrada, String archivo, String tabla) {
try {
ResultSet salidaRS = entrada;
ResultSetMetaData rsmd = salidaRS.getMetaData();
String consulta = "";
consulta = "insert into " + tabla + " (";
for (int k = 1; k < rsmd.getColumnCount(); k++) {
consulta = consulta + rsmd.getColumnName(k + 1) + ",";
}
consulta = consulta.substring(0, consulta.length() - 1) + ") VALUES(";
for (int k = 1; k < rsmd.getColumnCount(); k++) {
if (rsmd.getColumnTypeName(k + 1).contains("INTEGER")) {
consulta = consulta + "" + salidaRS.getString(k + 1) + ",";
} else if (salidaRS.getString(k + 1) == null || salidaRS.getString(k + 1).contains("null") || salidaRS.getString(k + 1).contains("----")) {
consulta = consulta + "null,";
} else {
consulta = consulta + "'" + salidaRS.getString(k + 1) + "',";
}
}
consulta = consulta.substring(0, consulta.length() - 1) + ");";
File f;
f = new File(tabla + ".txt");
if (!f.exists()) {
f.createNewFile();
}
escribeArchivo(tabla, consulta);
return true;
} catch (Exception a) {
a.printStackTrace();
}
return false;
}
No hay comentarios:
Publicar un comentario