Puoi selezionare l'elenco di colonne per una determinata tabella utilizzando INFORMATION_SCHEMA :
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Ora converti ResultSet da sopra query a List<String> dei nomi delle colonne. Dopodiché possiamo usarlo per convertire il ResultSet finale a JSON Object .
Pseudocodice:
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
Quando ResultSet è enorme, dovremmo considerare di utilizzare Streaming API da Jackson o Gson librerie per evitare problemi di "memoria insufficiente".
Vedi anche:
- Come ottenere il database struttura in MySQL tramite query
- API di streaming Jackson
- Jackson - Modello di elaborazione:Streaming API
- Streaming Gson
Aggiorna
Sembra che non sia necessario selezionare i nomi delle colonne utilizzando SQL extra query perché ResultSet ha getMetaData
metodo:
Vedi anche: