Você pode selecionar a lista de colunas para uma determinada tabela usando
INFORMATION_SCHEMA
:SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Agora, converta
ResultSet
da consulta acima para List<String>
dos nomes das colunas. Depois disso, podemos usá-lo para converter o ResultSet
final para JSON Object
. Pseudo-código:
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, devemos considerar o uso da Streaming API
de Jackson
ou Gson
bibliotecas para evitar o problema de "falta de memória". Veja também:
- Como obter banco de dados estrutura no MySQL via consulta
- Jackson Streaming API
- Jackson - Modelo de processamento:API de streaming
- Gson Streaming
Atualizar
Parece que não precisamos selecionar nomes de colunas usando
SQL
extra consulta porque ResultSet
tem getMetaData
método:Veja também: