Saltar al contenido

Flutter: forma eficaz de insertar una lista de datos en la base de datos

Solución:

Como lo menciona @chunhunghan, puede usar lotes para insertar datos masivos.

Aquí está la guía paso a paso:

  1. Prepare su archivo json, por ejemplo cities.json (cree un archivo csv de datos y use un convertidor de csv a json como este)
  2. Agregar cities.json archivar en tu assets directorio
  3. Definirlo en pubspec.yaml como esto:

    assets:
     - assets/cities.json
    
  4. Pega este código dentro onCreate método de su clase de base de datos (asegúrese de que sea después de la consulta de creación de la tabla)

    Batch batch = db.batch();
    
    String citiesJson = await rootBundle.loadString('assets/json/cities.json');
    List citiesList = json.decode(citiesJson);
    
    
    citiesList.forEach((val) {
      //assuming you have 'Cities' class defined
      Cities city = Cities.fromMap(val);
      batch.insert(tblCities, city.toMap());
    });
    
    batch.commit();
    

¡Eso es todo! 🙂

Hay soporte por lotes
Para evitar el ping-pong entre dardos y código nativo, puede usar Batch:

batch = db.batch();
batch.insert('Test', {'name': 'item'});
batch.update('Test', {'name': 'new_item'}, where: 'name = ?', whereArgs: ['item']);
batch.delete('Test', where: 'name = ?', whereArgs: ['item']);
results = await batch.commit();

ejemplo oficial https://github.com/tekartik/sqflite/blob/master/sqflite/example/lib/batch_test_page.dart

En su caso, para la lista de bucles con el comando batch.insert, es más fácil de mantener
para simplificar la sintaxis, use toMap, ejemplo

batch.insert("cities", city.toMap());   

detalle https://www.techiediaries.com/flutter-sqlite-crud-tutorial/

Si prefiere rawInsert, consulte Insertar varios registros en Sqflite

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *