【问题标题】:Load SQLite from InputStream in Java as ReadOnly从 Java 中的 InputStream 加载 SQLite 作为 ReadOnly
【发布时间】:2012-06-22 11:44:12
【问题描述】:

我有一个应用程序,它接收 SQLite 数据库来读取一些数据并将其导出为 CSV。我正在尝试将其上传到 Google App Engine,但我遇到了一个巨大的问题,我认为这使得该应用无法使用 GAE。

问题在于,由于在 GAE 上我无法写入文件系统,因此无法打开与 SQLite 文件的 JDBC 连接,因此无法读取数据以转换为 CSV。我一直在寻找其他选项,例如谷歌云存储,但我不想在这个应用程序上使用我唯一的“免费试用”,实际上我不想在之后为这个应用程序付费免费试用期结束,所以这不是一个选项。

经过大量研究,我唯一的猜测是我可能能够直接从 InputStream 加载数据库,因为我是从我用来获取它的上传表单中收到的,但是,这是 100% 的幸运猜测,我无法在网上找到任何关于这种方法的信息,但我只是不想相信任何现有的 SQLite JDBC 库都无法做到这一点,我希望这里有人能告诉我怎么做。

如果 InputStream 方法不可行,但您知道在 GAE 中以只读方式打开 SQLite DB 的其他方法,然后将其丢弃,请随时发表评论...

如果有另一个选项,如“不要使用 JDBC,使用带有管道的套接字连接来打开与 InputStream 的连接”,我也想听听,它不必使用 JDBC .

谢谢

【问题讨论】:

    标签: java sqlite google-app-engine jdbc


    【解决方案1】:

    JDBC 一般需要套接字,所以在 GAE 上不起作用。

    我会尝试dump SQLite to CSV,将文件上传到GAE,然后parse CSV contents 并插入数据库。

    【讨论】:

    • 谢谢,但这不是我的应用程序所期望的行为,我希望它是 SQLite 到 CSV 的“转储程序”,并且只是将 CSV “原样”返回给用户。跨度>
    • “我有一个应用程序,它接收 SQLite 数据库来读取一些数据并将其导出为 CSV”
    • “JDBC in general needs sockets”不适用于 SQLite,它需要一个原生库。
    • @DonalFellows,你所说的“原生库”是什么意思?我想知道更多,也许你可以给我一个链接或什么的。谢谢!
    • @hectorg87 SQLite 是一个无服务器数据库——不需要套接字——但它是用 C 编写的,因为它使用一些相当复杂的 I/O 来使提交正常工作,因此它需要一个本机作为其 JDBC “连接器”(实际上是数据库引擎本身)的一部分的库。
    【解决方案2】:

    简短的回答是“无法完成”。至少当前的 JDBC 实现不是这样,而且实现一个可行的方法可能非常困难,我去了 SQLite 用户邮件列表,最后得出了结论。

    您可以关注here 的线程,但在此之前您必须将register 加入邮件列表,因为它是私人的。

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 2012-12-21
      • 2017-03-05
      • 2016-08-16
      • 2012-12-19
      • 2013-12-10
      • 2012-12-06
      • 1970-01-01
      • 2011-02-13
      相关资源
      最近更新 更多