Mysql
 sql >> Base de données >  >> RDS >> Mysql

Convertir toutes les données de la table mysql en JSON au démarrage du printemps

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 :

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 :