Ruby on rails 3 Rails:将数据从生产MySQL复制到开发SQLite3中

Ruby on rails 3 Rails:将数据从生产MySQL复制到开发SQLite3中,ruby-on-rails-3,Ruby On Rails 3,我在将数据从生产MySQL服务器复制到开发SQLite3文件时遇到问题(这样我就可以在开发机器上使用真实的数据)。我在网上找到了大量关于如何从MySQL转换到SQLite3的资源,其中大部分是带有精心设计的sed过滤器的bash脚本,但都不起作用(最常见的问题是导入时的语法问题) 无论如何,后来我偶然发现了,我想“为什么,当然!让Rails为我做转换!”好吧,这也不起作用,因为所有的空字段(在YAML文件中表示为!!NULL)最终被导入SQLite3数据库,与“--!!!!NULL”完全相同,而

我在将数据从生产MySQL服务器复制到开发SQLite3文件时遇到问题(这样我就可以在开发机器上使用真实的数据)。我在网上找到了大量关于如何从MySQL转换到SQLite3的资源,其中大部分是带有精心设计的sed过滤器的bash脚本,但都不起作用(最常见的问题是导入时的语法问题)

无论如何,后来我偶然发现了,我想“为什么,当然!让Rails为我做转换!”好吧,这也不起作用,因为所有的空字段(在YAML文件中表示为
!!NULL
)最终被导入SQLite3数据库,与“--!!!!NULL”完全相同,而不是实际的空字段。我似乎是唯一有这个问题的人,因为GitHub问题队列中没有提到这个问题

我甚至尝试了使用syck而不是psych(在中找到)的变通方法,但没有任何区别

所以我的问题是:有人知道从一个rails数据库导出数据以导入到另一个数据库的简单方法吗?我所说的“简单”是指控制台上的一些命令,或者其他任何命令。

查看taps@

它将把MySQL数据库转储到本地sqlite数据库中,使用起来相对简单


从注释中可以看出:如果出现一个错误,说明
架构解析没有返回任何列,表可能不存在
,那么您需要指定SQLITE3DB的绝对路径,而不是相对路径

我真的不建议在生产和开发中使用两个不同的数据库后端。正如rails被认为是数据库不可知论者一样,当涉及到数据完整性时,您仍然可以获得非常不同的行为。当使用支持多种不同类型的约束(MySQL)和具有非常不同的约束/数据类型支持(SQLite3)的东西时,这一点尤其重要。我以前听过这一建议,所以有一段时间,我在开发机器上运行MySQL。但是我真的不喜欢在我的MacBook上启动MySQL服务器的开销,所以我回到SQLite3进行开发。你说得很有道理。但是数据复制只能是单向的(生产->开发),然后在开发黑客攻击期间用作“播放”数据……我更担心的是,您可能会在测试期间看到不同的行为。例如,您可能会在生产中遇到由于不同的数据类型/约束而未出现在开发/测试中的崩溃。当我必须进行SQL Server开发并启动Windows VM/SQL服务器时,我并不喜欢它——但是我发现的以这种方式发现的bug数量总是超过了资源消耗。(如果消耗资源的东西是windows:P,那么这确实说明了一些问题)。此外,不知道这是否有帮助,但请查看:。也许可以帮助你将内存占用最小化到可以接受的程度。好吧,特雷,你可能已经说服我将MySQL重新安装到我的MacBook上了!你提出了一些好的观点——有些我已经意识到了,但只要再听一遍就足以让我更多地思考我在做什么。你的意见真的很有价值。这看起来很有前途,只是它似乎也讨厌我。在完成服务器的拉式表单后,它总是会崩溃,模式解析没有返回任何列,表可能不存在,无论我做什么尝试。哦,搜索还在继续…为了解决“模式解析未返回任何列”错误,请指定sqlite3数据库的绝对路径,而不是相对路径。。。