【问题标题】:how to export and import selected tables or complete DB from sqlite database in nativescript in csv or some other format如何在 csv 或其他格式的 nativescript 中从 sqlite 数据库中导出和导入选定的表或完整的 DB
【发布时间】:2019-04-05 04:28:37
【问题描述】:

我正在尝试在一种情况下导出整个 sqlite 数据库,而在另一种情况下仅通过单击项目按钮(备份功能)来导出选定的表。我用谷歌搜索了同样的结果,但似乎是负面的反应。我为此使用https://github.com/NathanaelA/nativescript-sqlite 插件。还需要使用文件选择器或其他方式导入导出的数据库。现在,我正在尝试通过引用https://stackoverflow.com/a/49146471/8750174 使用带有nativescript 的java 代码来实现它。任何 nativescript 方式的帮助将不胜感激。提前致谢。

let is = java.io.InputStream = null;
let os = java.io.OutputStream = null;

try {
    is = new java.io.FileInputStream('/data/data/org.nativescript.Aads/databases/mydatabse.db');
    os = new java.io.FileOutputStream('/storage/emulated/0/aads_Backup/dbincsvformat.csv');

    const buffer = Array.create('byte', 4096);

    while ((is.read(buffer).length) > 0) {
        os.write(buffer, 0, length);
    }
} catch (e) {
    this.errorService.handleError(e);
} finally {
    console.log('copy done');
    is.close();
    os.close();
}

【问题讨论】:

    标签: javascript sqlite nativescript nativescript-plugin


    【解决方案1】:

    CSV 只是文本文件中制表符分隔或逗号分隔的值。 {N} 有它的跨平台file-system module,支持文件读/写。

    您所要做的就是将逗号分隔的字符串传递给writeText / writeTextSync 方法。

    类似的,

    const documents = fileSystemModule.knownFolders.documents();
    const file = documents.getFile("test.csv");
    file.writeTextSync(`1,2,3\n\r4,5,6`);
    

    【讨论】:

    • 这是完美的工作。但是如何将 test.db 转换为逗号分隔值。
    • 这是一个简单的 JavaScript 工作,将每一行的值数组转换为字符串。您可以使用.join(",") 方法。
    • 不,我不是在问这个。我有从网上下载的 test.db 文件。现在我想将此 .db 文件转换为 csv。所以根据你的指导,我可以在 csv 中转换数组,但如何将 .db 转换为数组。对不起,如果我在概念上错了......!我从 2 天开始就被困在这里了。
    • 使用 sqlite 插件。
    • 我检查了 sqlite,我几乎玩过它。但我仍然不知道该怎么做。我需要逐表阅读并转换每个表格吗?或者有什么简单的方法。和 Sqlite.copyDatabase() 这个方法很混乱,没有文档也不知道怎么用。您能否提供更多关于将 .db 文件转换为 .csv 的详细信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2010-12-30
    • 2021-12-21
    • 2023-03-17
    相关资源
    最近更新 更多