Du kan välja en lista med kolumner för given tabell med INFORMATION_SCHEMA
:
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Konvertera nu ResultSet
från ovanstående fråga till List<String>
kolumnnamn. Efter det kan vi använda den för att konvertera slutliga ResultSet
till JSON Object
.
Pseudokod:
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
När ResultSet
är enormt bör vi överväga att använda Streaming API
från Jackson
eller Gson
bibliotek för att undvika problem med "tom minne".
Se även:
- Hur får du en databas struktur i MySQL via fråga
- Jackson Streaming API
- Jackson - Bearbetningsmodell:Streaming API
- Gson Streaming
Uppdatera
Det verkar som att vi inte behöver välja kolumnnamn med extra SQL
fråga eftersom ResultSet
har getMetaData
metod:
Se även: