繁体   English   中英

将MySQL转储文件导入SQLite

[英]Import MySQL dump file to SQLite

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

你有shell访问权限吗? 您可以只使用cat file.sql | sqlite3 my.db cat file.sql | sqlite3 my.db尽管正如@VMai在注释中提到的那样,由于未进行预处理,由于特定于MySQL的SQL方言,这可能无法正常工作。

这是一个很好的博客文章 ,介绍了如何使用代码。 如果您需要担心MySQL专用的方言,则必须在代码工作流中对其进行预处理或修改。

如果SQL无法直接从MySQL导入,则可以使用此处列出的工具之一对SQL进行预处理。

因为我遇到了这个问题,所以我认为我的发现和解决方案可能符合其他人的利益。 这里是:

  • MySQL在数据类型方面比SQLite丰富得多,因此不可能进行详尽的代码转换实现。
  • 对于常见的数据类型,既​​适合作为内容表示形式的又是“整数”和“文本”。
  • 索引键具有不同的语法。
  • 总体而言,MySQL转储文件将需要过多的解析才能获得较小的结果。

但是,即使我们无权访问原始MySQL数据库,解决方案也非常简单,如下所示:

  • 将MySQL转储加载到您具有完全控制权的另一个临时MySQL类型数据库中。
  • 使用简单的(PHP)脚本进行读取,然后将MySQL表的内容写入文本文件。
  • 使用另一个脚本(在我的情况下为Java,适用于Android)读取此文本文件,并提供SQLite数据库表。 假定先前已创建SQLite模式。

这是基本的,但是,请相信我,它最适合此类功能。 MySQL和SQLite的构造绝对不一样!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM