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: