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: