以只读方式从Java中的InputStream加载SQLite
我有一个应用程序,它接收一个SQLite数据库来读取一些数据并将其导出为CSV。我正试图将其上传到谷歌应用程序引擎,但我遇到了一个巨大的问题,我认为这使得这个应用程序无法使用GAE
问题是,由于在GAE上我无法写入文件系统,我无法打开到SQLite文件的JDBC连接,因此我无法读取数据以转换为CSV。我一直在寻找其他选项,比如谷歌云存储,但我不想在这个应用程序上使用我唯一的“免费试用”,实际上我不想在免费试用结束后再为这个应用程序付费,所以这不是一个选项
经过大量研究,我唯一的猜测是,当我从用于获取数据库的上传表单中收到数据库时,我可能能够直接从InputStream加载数据库,然而,这是一个100%的幸运猜测,我还无法在网上找到关于这种方法的任何信息,但我只是不想相信,任何现有的JDBC库都不能用于SQLite,我希望这里的人能告诉我怎么做
如果InputStream方法不可行,但您知道在GAE中以只读方式打开SQLite DB,然后对其进行处理的其他方法,请随时发表评论
如果还有另一个选项,比如“不要使用JDBC,使用带有管道的socket连接来打开与InputStream的连接”,我也希望听到这样的说法,不必使用JDBC
谢谢
# 1 楼答案
简而言之,答案是“这是做不到的”。至少在当前的JDBC实现中没有,而且实现一个可行的可能非常困难,我查看了SQLite用户邮件列表,最后得出了结论
你可以跟随线程here,但是在你必须register到邮件列表之前,因为它是私有的
# 2 楼答案
JDBC通常需要套接字,所以它不能在GAE上工作
我会尝试dump SQLite to CSV,将文件上传到GAE,然后parse CSV contents插入数据库