Vous pouvez sélectionner la liste des colonnes pour une table donnée en utilisant INFORMATION_SCHEMA
:
SELECT COLUMN_NAME FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_NAME LIKE 'table_name'
Maintenant, convertissez ResultSet
de la requête ci-dessus à List<String>
des noms de colonnes. Après cela, nous pouvons l'utiliser pour convertir le ResultSet
final à JSON Object
.
Pseudo-code :
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
Lorsque ResultSet
est énorme, nous devrions envisager d'utiliser Streaming API
de Jackson
ou Gson
bibliothèques pour éviter les problèmes de "mémoire insuffisante".
Voir aussi :
- Comment obtenir la base de données structure dans MySQL via une requête
- API Jackson Streaming
- Jackson – Modèle de traitement :API de streaming
- Diffusion Gson
Mettre à jour
Il semble que nous n'ayons pas besoin de sélectionner les noms de colonne à l'aide de SQL
supplémentaire requête car ResultSet
a getMetaData
méthode :
Voir aussi :