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: