发布于 2009-08-17 16:37:13
免责声明:我是续集的维护者。
Sequel可能是最简单的方法。bin/sequel工具可以将MySQL数据库复制到SQLite数据库,因此,如果您查看该工具(http://github.com/jeremyevans/sequel/blob/205d8a04842c143736de76d645a2a955a1ca641f/bin/sequel)的源代码,就可以了解如何使用Sequel完成此操作。
由于事物的构造方式,直接复制模式,然后删除不需要的列可能是最简单的方法。或者,我只需要编写代码来创建我想要的SQLite数据库模式。
复制数据的代码可能会使用bin/sequel中的修改版本。
发布于 2009-08-17 05:10:51
如果您在两个数据库上使用类似的模型,您应该注意到ActiveResource的" attributes“方法返回该模型的属性的散列,而"attributes=”接收属性散列(它不必包含所有模型的属性)。记住这一点,您可以利用ActiveRecord::Base.establish_connection方法让这两个模型连接到不同的数据库。这样你就可以这样做了:
MysqlModel.establish_connection(YAML.load_file(path_to_database_yml))
SqliteMode.establish_connection(YAML.load_file(path_to_other_database_yml))
MysqlModel.all.each do |m|
SqliteModel.create(m.attributes)
end如果模型不共享所有字段,或者在将其分配给Sqlite模型之前需要进行一些处理,则可以构建一个接收原始属性散列并对其进行处理的方法,以便为Sqlite模型返回正确的属性散列。
发布于 2009-08-15 17:27:49
您的rails应用程序是为客户端按需创建sqlite db,还是此过程是带外维护作业?
如果是维护工作,我会编写一个shell脚本来转储mysql数据库,对转储进行任何替换以使其特定于sqlite,最后将其导入到sqlite db中。
https://stackoverflow.com/questions/1281310
复制相似问题