Du kan vælge en liste over kolonner for en given tabel ved hjælp af INFORMATION_SCHEMA
:
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Konverter nu ResultSet
fra ovenstående forespørgsel til List<String>
af kolonnenavne. Derefter kan vi bruge det til at konvertere det endelige ResultSet
til JSON Object
.
Pseudokode:
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
er enorm, bør vi overveje at bruge Streaming API
fra Jackson
eller Gson
biblioteker for at undgå problemer med "tom hukommelse".
Se også:
- Sådan får du databasen struktur i MySQL via forespørgsel
- Jackson Streaming API
- Jackson - Processing model:Streaming API
- Gson Streaming
Opdater
Det ser ud til, at vi ikke behøver at vælge kolonnenavne ved hjælp af ekstra SQL
forespørgsel fordi ResultSet
har getMetaData
metode:
Se også: