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: