类似Rails的数据库迁移?
是否有任何易于安装/使用(在UNIX上)的数据库迁移工具(如Rails迁移)?我真的很喜欢这个主意,但是单纯地安装ruby / rails来管理数据库迁移似乎过分了。
解决方案
我还没有亲自做过,但是应该可以使用ActiveRecord :: Migration而无需其他Rails东西。正确设置加载路径将是困难的部分,但实际上,我们所需要做的只是rake
任务和db / migrate
目录以及它们所依赖的任何Rails gem,可能是activerecord
,actviesupport
以及与其他人一样,例如" railies"。我会尝试一下,然后看看缺少哪些类,然后将其添加进去。
在以前的公司中,我们构建了一个工具,该工具实际上完成了ActiveRecord :: Migration的工作,只是它是用Java作为Maven插件编写的。它所做的只是组装SQL脚本的文本Blob。它只需要对文件名进行排序有一定的了解,并知道如何更新版本表。
只需使用ActiveRecord和一个简单的Rakefile。例如,如果将迁移文件放在db / migrate目录中,并具有一个具有db配置的database.yml文件,则此简单的Rakefile应该可以工作:
Rakefile:
require 'active_record' require 'yaml' desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x" task :migrate => :environment do ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil) end task :environment do ActiveRecord::Base.establish_connection(YAML::load(File.open('database.yml'))) ActiveRecord::Base.logger = Logger.new(STDOUT) end
database.yml:
adapter: mysql encoding: utf8 database: test_database username: root password: host: localhost
之后,我们将可以运行rake migration
,并在没有周围Rails应用程序的情况下拥有所有的迁移优势。
另外,我有一组bash脚本,它们执行的功能与ActiveRecord迁移非常相似,但它们仅适用于Oracle。在切换到Ruby和Rails之前,我曾经使用过它们。它们有些复杂,因此我不提供任何支持,但是如果我们有兴趣,请随时与我联系。
还有一个名为Java Database Migrations的项目。要获取代码,请查看该项目的Google代码页面。
我看到这个主题确实很老,但我会为将来的Google员工提供帮助。
如果我们不想走ActiveRecord :: Migrate路线,我真的很喜欢使用Python的SQLAlchemy和SQLAlchemy-Migrate来管理需要版本控制的数据库。