U kunt een lijst met kolommen voor een bepaalde tabel selecteren met INFORMATION_SCHEMA
:
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Converteer nu ResultSet
van boven naar List<String>
van kolomnamen. Daarna kunnen we het gebruiken om de uiteindelijke ResultSet
. te converteren naar JSON Object
.
Pseudocode:
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
Wanneer ResultSet
is enorm, we zouden moeten overwegen om Streaming API
te gebruiken van Jackson
of Gson
bibliotheken om het probleem "onvoldoende geheugen" te voorkomen.
Zie ook:
- Database verkrijgen structuur in MySQL via query
- Jackson Streaming-API
- Jackson - Verwerkingsmodel:streaming-API
- Gson-streaming
Bijwerken
Het lijkt erop dat we geen kolomnamen hoeven te selecteren met extra SQL
query omdat ResultSet
heeft getMetaData
methode:
Zie ook: