我有一个查询SQL表并将子集保存到CSV文件的方法:
public void exportSQL(File outputFile, String c1) throws SQLException, IOException {
csvWrite = new CSVWriter(new FileWriter(outputFile));
curCSV = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE col1 = '" + c1 + "'", null);
csvWrite.writeNext(curCSV.getColumnNames());
while (curCSV.moveToNext()) {
String arrStr[] = {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),
curCSV.getString(3), curCSV.getString(4), curCSV.getString(5),
curCSV.getString(6), curCSV.getString(7), curCSV.getString(8)};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
curCSV.close();
}
但是,我还希望将此查询/子集另存为sqlite(.db)文件。
我已经看到了一些关于将整个数据库复制到另一个SQLite文件的问题,但是没有找到任何包含只保存表的子集的方法的内容。换句话说,我想查询一个表来获取一个游标,然后将该查询/游标的内容写入.db
文件
在Java / Android中执行此操作的正确方法是什么?
有很多相关的问题,但它们似乎并不能涵盖这个具体案例。例如:
.db
文件,并且只包含我的特定查询结果。表答案 0 :(得分:0)
我不认为您可以简单地将查询/子集保存为可用作SQLite DB文件的DB文件,因为DB文件包含其他信息,例如它的主表。
你可能做的是创建一个新的,命名不同的空数据库,然后创建相应的表并用相关数据填充它们,最后保存新的DB文件。
另一种方法是复制数据库文件,将副本作为数据库打开,然后删除您不需要的组件(行表),只留下您需要的子集副本。< / p>
第三种可能是制作原件的副本,减去原件的副本,保存副本,然后从第1份副本恢复。