我想导入一个excel文件到我的数据库设计与android上的房间库。我可以使用库导出数据库,但对于导入,我需要检查项目和处理冲突,但我不知道如何。
看看下面的文章就好了。文章1和文章2重点介绍了如何使用room导入csv文件。
如果您可以使用其他库,这也很有帮助。
我建议把这个功能分成两个任务。
- 从CSV/Excel文件中提取数据
- 将该数据放入数据库
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("',");
}
}
- 要将提取的数据放入数据库中,可以使用以下代码:
在DAO中创建一个原始查询函数。
@RawQuery
Boolean insertDataRawFormat(SupportSQLiteQuery query);
使用该查询将数据放入数据库
SimpleSQLiteQuery query = new SimpleSQLiteQuery("Insert INTO " + tableName + " (" + columns + ") " + "values(" + value + ")",
new Object[]{});
getDb().cashDrawerDao().insertDataRawFormat(query);