21

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

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

4

4 回答 4

6

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

它并不漂亮,但老实说,漂亮似乎几乎不是此类事情的主要关注点。这种技术写起来很快,而且很有效。这些是我对此类事情的主要标准。

你可能也想看看这个线程。看起来有几个人基本上已经把你需要的东西放在一起了。不过,我并没有深入研究它,所以不能保证。

于 2008-08-10T19:25:58.200 回答
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。

只是注释语法、auto_increment & TYPE= 声明和转义字符不同。

于 2008-08-10T15:25:27.500 回答
2

以下是转换器列表:


另一种效果很好但很少被提及的替代方法是:使用 ORM 类为您抽象出特定的数据库差异。例如,您可以在 PHP ( RedBean )、Python (Django 的 ORM 层、StormSqlAlchemy )、Ruby on Rails ( ActiveRecord )、Cocoa ( CoreData )中获得这些

即你可以这样做:

  1. 使用 ORM 类从源数据库加载数据。
  2. 将数据存储在内存中或序列化到磁盘。
  3. 使用 ORM 类将数据存储到源数据库中。
于 2011-05-14T07:13:30.000 回答
1

如果只是几个表,您可能可以用您喜欢的脚本语言编写脚本,并在阅读所有回复或找到合适的工具之前完成所有工作。我愿意。:)

于 2008-08-10T15:23:55.693 回答