如何从 MYSQL 数据库实例自动生成 Rails Migration 类?

发布于 2024-10-14 13:51:36 字数 143 浏览 3 评论 0原文

我有数据库脚本,它创建包含 100 多个表和大量数据的数据库。为整个数据库创建 Rails 迁移类对我来说是一项乏味的任务。但我认为 Rails 迁移是长期数据库变更管理的一个不错的选择。请建议一些从 MYSQL 数据库实例自动生成 Rails Migrate 类的方法。

I have database scripts which create database with more than 100 tables and lot of data. It is a tedious task for me to create Rails Migration classes for whole database. But i see Rails Migration as a good option in long term database change management. Please suggest some way to generate Rails Migrate classes automatically from MYSQL database instance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

星軌x 2024-10-21 13:51:36

这可以通过三个简单的步骤完成:

  1. 编写 config/database.yml 来引用您的数据库。
  2. 运行“rake db:schema:dump”生成db/schema.rb。这是
    文档:

    $ rake -T db:schema:dump
    ...
    rake db:schema:dump # 创建db/schema.rb文件,可以
    可移植地用于 AR 支持的任何数据库

  3. 将 schema.rb 转换为 db/migrate/XXXXXX_create_migration.rb:

class CreateMigration < ActiveRecord::Migration
  def self.up
    # insert schema.rb here
  end

  def self.down
    # drop all the tables if you really need
    # to support migration back to version 0
  end
end

This can be done in three simple steps:

  1. write config/database.yml to reference your database.
  2. Run "rake db:schema:dump" to generate db/schema.rb. Here's the
    documentation:

    $ rake -T db:schema:dump
    ...
    rake db:schema:dump # Create a db/schema.rb file that can be
    portably used against any DB supported by AR

  3. Convert schema.rb into db/migrate/XXXXXX_create_migration.rb:

class CreateMigration < ActiveRecord::Migration
  def self.up
    # insert schema.rb here
  end

  def self.down
    # drop all the tables if you really need
    # to support migration back to version 0
  end
end
夏雨凉 2024-10-21 13:51:36

看看续集。它是一个 Ruby 库,可以完成所有相同的事情,但不会将您束缚于 Rails/ActiveRecord。如果您确实有长远考虑,这可能正是您所需要的。

Take a look at Sequel. Its a Ruby library that does all the same things but without tethering you to Rails/ActiveRecord. It might be just what you need if you are thinking really long term.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文