【问题标题】:Is there any way to Import CSV file to Sqlite Database in Flutter way?有没有办法以 Flutter 方式将 CSV 文件导入 Sqlite 数据库?
【发布时间】:2019-11-06 07:13:38
【问题描述】:

我一直在寻找以颤振的方式将 csv 导入数据库。但不幸的是,我找不到与此案相关的文章。所以我想知道是否有办法将 csv 导入数据库。如果是,我该如何实现?就我而言,我打开文件选择器并想要导入 csv 文件。我可以用 Kotlin 的方式轻松地做到这一点,但不能以一种颤抖的方式。我将不胜感激。

【问题讨论】:

  • 使用pub.dev/packages/sqflite - 很可能在循环中执行db.insert - 每行一个insert
  • 我用的是sqlite,但是如何读取内容并将它们添加到sqlite数据库中?在 Kotlin 中,我使用 headLine(BufferedReader(file)) 读取并删除“,”并保存在数组中并插入数据库。我开始学习 Flutter 才 1 个月,如何在 Flutter 中实现这一目标。
  • File.openRead()LineSplitter
  • 好的,我去看看
  • 更多:fluttermaster.com/how-to-read-file-using-dart - 我忘了小文件可以使用File.readAsLines()

标签: sqlite csv flutter dart


【解决方案1】:

嗯,这并不简单。

您通常会使用 https://pub.dev/packages/csvhttps://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 中的值。

【讨论】:

  • 你能告诉我更多关于实现一些辅助方法的信息吗?我不明白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 2011-07-17
  • 1970-01-01
  • 2011-12-20
相关资源
最近更新 更多