Puede seleccionar una lista de columnas para una tabla dada usando INFORMATION_SCHEMA
:
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Ahora, convierta ResultSet
desde la consulta anterior a List<String>
de nombres de columna. Después de eso, podemos usarlo para convertir el ResultSet
final a JSON Object
.
Pseudocódigo:
Connection connection = createConnection();
List<String> columns = loadColumns(connection, tableName);
ResultSet dataSet = loadData(connection, tableName);
while (dataSet.next()) {
JSONObject record = new JSONObject();
for (String column : columns) {
record.put(column, dataSet.getObject(column));
}
array.add(record);
}
// save array to file
Cuando ResultSet
es enorme, deberíamos considerar usar Streaming API
de Jackson
o Gson
bibliotecas para evitar el problema de "falta de memoria".
Véase también:
- Cómo obtener la base de datos estructura en MySQL a través de consulta
- API de transmisión de Jackson
- Jackson - Modelo de procesamiento:Streaming API
- Gson Streaming
Actualizar
Parece que no necesitamos seleccionar los nombres de las columnas usando SQL
adicional consulta porque ResultSet
tiene getMetaData
método:
Véase también: