如何导入和管理冲突的excel文件到房间sqlite数据库?



我想导入一个excel文件到我的数据库设计与android上的房间库。我可以使用库导出数据库,但对于导入,我需要检查项目和处理冲突,但我不知道如何。

看看下面的文章就好了。文章1和文章2重点介绍了如何使用room导入csv文件。

如果您可以使用其他库,这也很有帮助。

我建议把这个功能分成两个任务。

  1. 从CSV/Excel文件中提取数据
  2. 将该数据放入数据库

1从CSV/Excel文件中提取数据,可以使用以下代码:

CSVReader csvReader = new CSVReader(new FileReader(Environment.getExternalStorageDirectory() + "/" + TableName));
String[] nextLine;
int count = 0;
StringBuilder columns = new StringBuilder();
StringBuilder value = new StringBuilder();

while ((nextLine = csvReader.readNext()) != null) {
// nextLine[] is an array of values from the line
for (int i = 0; i < nextLine.length - 1; i++) {
if (count == 0) {
if (i == nextLine.length - 2)
columns.append(nextLine[i]);
else
columns.append(nextLine[i]).append(",");
} else {
if (i == nextLine.length - 2)
value.append("'").append(nextLine[i]).append("'");
else
value.append("'").append(nextLine[i]).append("',");
}
}
  1. 要将提取的数据放入数据库中,可以使用以下代码:

在DAO中创建一个原始查询函数。

@RawQuery  
Boolean insertDataRawFormat(SupportSQLiteQuery query);

使用该查询将数据放入数据库

SimpleSQLiteQuery query = new SimpleSQLiteQuery("Insert INTO " + tableName + " (" + columns + ") " + "values(" + value + ")",
new Object[]{});
getDb().cashDrawerDao().insertDataRawFormat(query);

最新更新