将MySQL转储文件导入SQLite

时间:2014-05-25 13:01:57

标签: java android mysql sql sqlite

这是我的用例: 我有一个由我无法访问的服务器应用程序提供的sql dump文件,也没有发送到该文件的MySQL数据库。 sql dump文件是一个普通的基本SQL语法,由phpmyadmin生成。 我将此文本文件下载到Android设备中。列只是类型' int'或者' text',而不是其他类型。 我希望然后将此文件导入到Android应用程序的SQLite数据库中 - 基本上将文件读入流中,然后逐个执行sql语句。 我的问题:Android中是否有任何现有的类或者我可以在Java / Android中使用的知识,并将MySQL转储文件直接导入SQLite,这样可以节省一些时间来自己开发解析器? 同样,它不是关于外部工具。 谢谢!

2 个答案:

答案 0 :(得分:2)

你有shell访问权限吗?你可以只cat file.sql | sqlite3 my.db虽然@VMai在评论中提到,但由于没有预处理的MySQL特定的SQL方言,这可能不起作用。

Here is a good blog entry如何在代码中执行此操作。如果您需要担心特定于MySQL的方言,则必须在代码中的工作流中预处理或修改它。

如果不能直接导出MySQL,您可以使用列出here之一的工具对SQL进行预处理。

答案 1 :(得分:-1)

因为我遇到了这个问题,我认为我的发现和解决方案可能符合其他人的利益。 这里是:      - MySQL在数据类型方面比SQLite更丰富,因此无法实现详尽的转码实现。      - 对于常见的数据类型,什么都适合作为内容表示的整数'和'文字'。      - 索引键具有不同的语法。      - 总的来说,MySQL转储文件需要过多的解析来获得一个小结果。

解决方案然而非常简单,即使我们无法访问原始 - MySQL - 数据库,如下所示:      - 将MySQL转储加载到另一个瞬态MySQL类型数据库中,您可以完全控制它。      - 使用简单的(PHP)脚本读取然后将MySQL表的内容写入文本文件。      - 使用另一个脚本(在我的情况下为Java)读取此文本文件并提供SQLite数据库表。假设先前已创建SQLite模式。 这是基本的,但请相信我,它最适合这种功能。 MySQL和SQLite绝对不像构造一样!