将mysql数据库转换为sqlite数据库的最佳方法是什么?

时间:2008-08-10 15:03:20

标签: sql mysql database sqlite

我目前有一个相对较小的(4或5个表,5000行)MySQL数据库,我想将其转换为sqlite数据库。由于我可能不得不多次这样做,如果有人可以推荐任何有用的工具,或者至少任何易于复制的方法,我将不胜感激。

(我对所涉及的数据库/机器拥有完全的管理员权限。)

4 个答案:

答案 0 :(得分:5)

我不得不做几次类似的事情。对我来说最简单的方法是编写一个脚本,该脚本从一个数据源获取并为新数据源生成输出。只需对当前数据库中的每个表执行SELECT *查询,然后将所有行转储到新数据库的INSERT INTO查询中。您可以将其转储到文件中,也可以直接将其传输到数据库前端。

它并不漂亮,但说实话,对于像这样的事情来说,似乎并不是一个主要问题。这种技术写得很快,而且很有效。这些是我这样做的主要标准。

您也可以查看this thread。看起来好几个人基本上已经把你需要的东西放在一起了。不过,我看起来并不那么远,所以没有保证。

答案 1 :(得分:2)

只要MySQL转储文件不超过SQLite查询语言,您就应该可以轻松迁移:

 tgl@moto~$ mysqldump old-database > old-database-dump.sql
 tgl@moto~$ sqlite3 -init old-database-dump.sql new-database

我自己没试过。

更新:

看起来你需要对MySQL转储进行一些编辑。我会使用sed或Google for it.

只是评论语法,auto_increment& TYPE =声明,转义字符不同。

答案 2 :(得分:2)

以下是转换器列表:

<小时/> 一种可以很好地工作但很少被提及的替代方法是:使用ORM类来为您抽象出特定的数据库差异。例如你可以用PHP(RedBean),Python(Django的ORM层,StormSqlAlchemy),Ruby on Rails( ActiveRecord),Cocoa(CoreData

即。你可以这样做:

  1. 使用ORM类从源数据库加载数据。
  2. 将数据存储在内存中或序列化到磁盘。
  3. 使用ORM类将数据存储到源数据库中。

答案 3 :(得分:1)

如果它只是几张表,您可以在首选的脚本语言中编写脚本,并在读取所有回复或追踪合适的工具时完成所有操作。我会的。 :)