Есть ли способ импортировать файл CSV в базу данных Sqlite по-флаттерски? - PullRequest
1 голос
/ 06 ноября 2019

Я искал, чтобы импортировать CSV в базу данных по-флаттерски. Но, к сожалению, я не могу найти статьи, связанные с этим делом. Поэтому мне интересно, если есть способ импортировать CSV в базу данных. Если да, как я могу этого достичь? В моем случае я открываю средство выбора файлов и хочу импортировать CSV-файл. Я легко могу сделать это по-котлински, но не трепетно. Буду признателен за любую помощь.

1 Ответ

2 голосов
/ 06 ноября 2019

Ну, это не так просто.

Обычно вы используете что-то вроде https://pub.dev/packages/csv или https://pub.dev/packages/spreadsheet_decoder для анализа CSV.

Так это будет выглядеть примерно так:

final input = new File('documents/file.csv').openRead();

Затем преобразуйте его в список:

final fields = await input.transform(utf8.decoder).transform(new CsvToListConverter()).toList();

После того, как вы это сделаете, у вас обычно будетфункция, которая собирается сделать массовое обновление.

Сначала создайте базу данных

Database database = await openDatabase(path, version: 1,
    onCreate: (Database db, int version) async {
  await db.execute(
      'CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, num REAL)');
});

Затем вы можете использовать некоторый вспомогательный метод, подобный упомянутому здесь => https://stackoverflow.com/a/56507307/1737811, чтобы заполнить поля базы данных вашим результатом.

Таким образом, вы передадите свой tablename и, конечно, List, содержащий значения из CSV, которые вы только что декодировали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...