Можете да изберете списък с колони за дадена таблица с помощта на INFORMATION_SCHEMA
:
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Сега конвертирайте ResultSet
от горната заявка към List<String>
на имена на колони. След това можем да го използваме за конвертиране на окончателен ResultSet
към JSON Object
.
Псевдокод:
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
Когато ResultSet
е огромно, ние трябва да помислим за използването на Streaming API
от Jackson
или Gson
библиотеки, за да избегнете проблема с липсата на памет.
Вижте също:
- Как да получите база данни структура в MySQL чрез заявка
- Jackson Streaming API
- Jackson – Модел на обработка:API за поточно предаване
- Gson Streaming
Актуализиране
Изглежда, че няма нужда да избираме имена на колони, използвайки допълнителен SQL
заявка, защото ResultSet
има getMetaData
метод:
Вижте също: