类似 Rails 的数据库迁移?
-
01-07-2019 - |
题
是否有任何易于安装/使用(在 unix 上)的数据库迁移工具,例如 Rails Migrations?我真的很喜欢这个想法,但是纯粹安装 ruby/rails 来管理我的数据库迁移似乎有点矫枉过正。
解决方案
只需使用 ActiveRecord 和一个简单的 Rakefile。例如,如果您将迁移放入 db/migrate
目录并有一个 database.yml
包含数据库配置的文件,这个简单的 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
数据库.yml:
adapter: mysql
encoding: utf8
database: test_database
username: root
password:
host: localhost
之后,您将能够运行 rake migrate
并拥有所有迁移优点,无需周围的 Rails 应用程序。
或者,我有一组 bash 脚本,它们执行与 ActiveRecord 迁移非常相似的功能,但它们仅适用于 Oracle。在转向 Ruby 和 Rails 之前我曾经使用过它们。它们有点复杂,我不提供支持,但如果您有兴趣,请随时与我联系。
其他提示
还有一个项目叫 Java 数据库迁移. 。要获取代码,请查看 该项目的 Google 代码页.
我发现这个话题确实很老了,但我会为未来的谷歌用户提供帮助。
我真的很喜欢使用 Python 的 SQLAlchemy 和 SQLAlchemy-迁移 如果您不想走 ActiveRecord::Migrate 路线,则可以管理需要版本控制的数据库。
我个人没有这样做,但是应该可以使用 ActiveRecord::Migration 而不需要任何其他 Rails 东西。正确设置加载路径将是困难的部分,但实际上您所需要的只是 rake
任务和 db/migrate
目录加上它们依赖的任何 Rails gem,可能 activerecord
, actviesupport
也许还有其他几个人喜欢 railties
. 。我会尝试一下,看看缺少哪些类并将其添加进去。
在之前的一家公司,我们构建了一个工具,其功能基本上与 ActiveRecord::Migration 的功能相同,只不过它是用 Java 编写的 Maven 插件。它所做的只是组装 SQL 脚本的文本 blob。它只需要了解文件名的顺序并知道如何更新版本控制表。
该项目旨在允许在不安装 Rails 的情况下运行活动记录迁移:
https://github.com/bretweinraub/rails-free-DB-Migrate
安装它(git克隆它)并将其用作项目的基础。
这是一个用 Haskell 编写的工具: