有很多教程可用于将 SQLite 数据库导出到 csv 文件,但没有足够的东西从房间数据库导出。
使用 sqlite 导出参考将SQLite 数据库导出到 android 中的 csv 文件,手动解析每列行的空间。以下是我的代码:
@Dao
interface CategoryDao {
@Query("SELECT * FROM Category")
fun getAllCategory(): List<Category>
}
// Export csv logic
val categoryList = categoryDao.getAllCategory()
val csvWrite = CSVWriter(FileWriter(file))
for (item in categoryList) {
val arrStr = arrayOf<String>(item.categoryId, item.categoryName)
csvWrite.writeNext(arrStr)
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以导出csv。即使在房间里也没有实用地获取表的列名,因此无法为所有表创建动态通用逻辑。
我正在尝试设置Room数据库备份功能。问题是,一旦下载,sql数据库文件在应用程序中将不包含最新的数据集。它总是会丢失一些最新记录。是否有导出会议室数据库的正确方法?PS:使用sqliteHelper处理我的数据库时,我没有遇到类似的问题,因此我想它一定与Room有关。
我这样做的方式:
@Throws(IOException::class)
private fun copyAppDbToDownloadFolder(address: String) {
val backupDB = File(address, "studioDb.db")
val currentDB = applicationContext.getDatabasePath(StudioDatabase.DB_NAME)
if (currentDB.exists()) {
val src = FileInputStream(currentDB).channel
val dst = FileOutputStream(backupDB).channel
dst.transferFrom(src, 0, src.size())
src.close()
dst.close()
}
}
Run Code Online (Sandbox Code Playgroud) 有很多关于如何从 csv、另一个数据库等导入内部数据库数据的文章。但我还没有找到任何人解释如何导出 flutter 数据库。
目标是为每部手机创建一个备份。(所以我需要了解它的位置以创建备份)
我看过几篇关于如何在android中导入和导出数据库的帖子,我找到了这些代码,但我似乎无法使它工作.我收到错误java.io.filenotfoundexception/storage/sdcard0/BackupFolder/DatabaseName:打开失败的ENOENT(没有这样的文件或目录).我改变了一些东西,但我仍然没有找到文件异常
这是我的出口:
private void exportDB() {
try {
db.open();
File newFile = new File("/sdcard/myexport");
InputStream input = new FileInputStream(
"/data/data/com.example.mycarfuel/data
bases/MyDatabase");
OutputStream output = new FileOutputStream(newFile);
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
output.flush();
output.close();
input.close();
db.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
和我的导入:
private void importDB() {
try {
File …Run Code Online (Sandbox Code Playgroud) android ×5
android-room ×2
sqlite ×2
android-sql ×1
backup ×1
csv ×1
database ×1
flutter ×1
kotlin ×1
sd-card ×1