首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于从mysql源填充sqlite数据库的ruby解决方案有什么建议吗?

问对于从mysql源填充sqlite数据库的ruby解决方案有什么建议吗?
EN

Stack Overflow用户
提问于 2009-08-15 06:26:29
回答 4查看 763关注 0票数 1

我有一个使用MySQL的Rails应用程序。应用程序需要填充sqlite数据库,以便从主mysql数据库分发到客户端应用程序。sqlite数据库的模式与mysql数据库非常相似,但并不完全相同。sqlite数据库将使用存储在主mysql数据库中的模式和数据的子集进行填充。数据子集将由http请求中传递的参数确定。这不是作为维护操作,而是将mysql数据库的子集作为sqlite数据库传递给客户端应用程序。

我正在考虑尝试修改taps,或者使用sequel编写一个金属应用程序来连接到这两个数据库来传输数据。

如有其他建议,我们将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-17 16:37:13

免责声明:我是续集的维护者。

Sequel可能是最简单的方法。bin/sequel工具可以将MySQL数据库复制到SQLite数据库,因此,如果您查看该工具(http://github.com/jeremyevans/sequel/blob/205d8a04842c143736de76d645a2a955a1ca641f/bin/sequel)的源代码,就可以了解如何使用Sequel完成此操作。

由于事物的构造方式,直接复制模式,然后删除不需要的列可能是最简单的方法。或者,我只需要编写代码来创建我想要的SQLite数据库模式。

复制数据的代码可能会使用bin/sequel中的修改版本。

票数 2
EN

Stack Overflow用户

发布于 2009-08-17 05:10:51

如果您在两个数据库上使用类似的模型,您应该注意到ActiveResource的" attributes“方法返回该模型的属性的散列,而"attributes=”接收属性散列(它不必包含所有模型的属性)。记住这一点,您可以利用ActiveRecord::Base.establish_connection方法让这两个模型连接到不同的数据库。这样你就可以这样做了:

代码语言:javascript
复制
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模型返回正确的属性散列。

票数 1
EN

Stack Overflow用户

发布于 2009-08-15 17:27:49

您的rails应用程序是为客户端按需创建sqlite db,还是此过程是带外维护作业?

如果是维护工作,我会编写一个shell脚本来转储mysql数据库,对转储进行任何替换以使其特定于sqlite,最后将其导入到sqlite db中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1281310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档