Możesz wybrać listę kolumn dla danej tabeli za pomocą INFORMATION_SCHEMA
:
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Teraz przekonwertuj ResultSet
z powyższego zapytania do List<String>
nazw kolumn. Następnie możemy go użyć do przekonwertowania końcowego ResultSet
do 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
Kiedy ResultSet
jest ogromny, powinniśmy rozważyć użycie Streaming API
od Jackson
lub Gson
biblioteki, aby uniknąć problemu "braku pamięci".
Zobacz też:
- Jak uzyskać bazę danych struktura w MySQL za pomocą zapytania
- Jackson Streaming API
- Jackson – model przetwarzania:Streaming API
- Gson Streaming
Aktualizacja
Wygląda na to, że nie musimy wybierać nazw kolumn za pomocą dodatkowego SQL
zapytanie, ponieważ ResultSet
ma getMetaData
metoda:
Zobacz też: