`
fosa0989
  • 浏览: 109722 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

写了个migration的工具类 对外键引用和多对多关系的创建进行支持

阅读更多

写了个migration的工具类 对外键引用和多对多关系的创建进行支持

module MigrationHelper
   # Add foreign key for migrations  
   # Usage:  
   # * /db/migrate/xxxx_create_users.rb  
   # class CreateUsers < ActiveRecord::Migration  
   #   extend MigrateionHelpers  
   #   def self.up  
   #     ...  
   #     create_foreign_key :users, :group_id, :groups  
   #   end  
   #   def down.up  
   #     ...  
   #     drop_foreign_key  :users, :group_id  
   #   end  
   # end  
   #    
  def create_foreign_key(from_table, from_column, to_table, to_column='id')
    execute %(alter table #{from_table}
              add constraint #{constraint_name(from_table, from_column)}
              foreign key (#{from_column})
              references #{to_table}(#{to_column}))
  end
  
  def drop_foreign_key(from_table, from_column)    
    execute %(alter table #{from_table} 
              drop constraint #{constraint_name(from_table, from_column)})
  end
  
  def constraint_name(table, column)
    "fk_#{table}_#{column}"
  end
  

   # Add many-to-many relationship for migrations  
   # Usage:  
   # * /db/migrate/xxxx_create_users.rb  
   # class CreateUsers < ActiveRecord::Migration  
   #   extend MigrateionHelpers  
   #   def self.up  
   #     ...  
   #   end  
   #   def down.up  
   #     ...  
   #   end  
   # end  
   # * /db/migrate/xxxx_create_groups.rb  
   # class CreateGroups < ActiveRecord::Migration  
   #   extend MigrateionHelpers  
   #   def self.up  
   #     ...  
   #     create_many_to_many :users, :groups
   #   end  
   #   def down.up  
   #     ...  
   #     drop_many_to_many :users, :groups
   #   end  
   # end  
   #      
  def create_many_to_many(table1, table2)
    @table = many_to_many_name(table1, table2)
    @column1 = table1.to_s.singularize + "_id"
    @column2 = table2.to_s.singularize + "_id"
    create_table @table, :id => false do |t|
      t.integer @column1
      t.integer @column2
    end
    
    create_foreign_key @table, @column1, table1
    create_foreign_key @table, @column2, table2  
  end

  def drop_many_to_many(table1, table2)
    @table = many_to_many_name(table1, table2)
    @column1 = table1.to_s.singularize + "_id"
    @column2 = table2.to_s.singularize + "_id"
    
    drop_foreign_key @table, @column1
    drop_foreign_key @table, @column2

    drop_table @table
  end
  
  def many_to_many_name(table1, table2)
    "#{table1}_#{table2}"
  end

end
分享到:
评论

相关推荐

    多数据库迁移工具 dbMigration .NET v1.0

    dbMigration .NET 是个简单,易用,直观的多数据库迁移工具。通过 DBMigration .NET 可以在不同数据库之间轻松迁移模式和数据,不需要经过复杂的程序处理。当前支持的数据库:PostgreSQL, SQL Server, SQL Azure, ...

    MySQL Migration Toolkit 数据库转化工具下载

    - **多数据库支持**:MySQL Migration Toolkit支持多种非MySQL数据库,包括SQL Server、Oracle、DB2、Sybase、Access等,使用户能够方便地将这些数据库的数据迁移到MySQL。 - **自动检测和映射**:工具会自动检测...

    ESF Database Migration Toolkit

    **ESF Database Migration Toolkit** 是一款专业的数据迁移工具,它具备强大的功能,支持在多种主流数据库之间进行数据迁移。这款工具能够帮助用户轻松地将数据从一个数据库系统迁移到另一个,比如MySQL、Oracle、...

    MySQL Migration Toolkit 数据库转换工具

    MySQL Migration Toolkit v2.3 数据库转换工具 MySQL Migration Toolkit 可以将任何数据源转换成mysql的数据,也可以将mysql的数据转换成其它类型的数据 MySQL Migration Toolkit 包括下列转换工具: Access-to-...

    使用 IBM DB2 Migration Toolkit 迁移数据

    IBM DB2 Migration Toolkit (MTK) 是一款强大的工具,它可以帮助用户轻松地将数据从其他数据库系统如 Oracle 和 SQL Server 迁移到 IBM DB2 Universal Database (UDB)。 #### 目标读者 本文主要针对那些正在考虑或...

    IBM Migration Toolkit

    1. **多数据库支持**:IBM Migration Toolkit 支持SQL Server、MySQL、Oracle和DB2等多种数据库系统,使得跨数据库的迁移成为可能。 2. **结构迁移**:该工具可以迁移数据库的架构,包括表、视图、存储过程、函数、...

    数据库转换神器 ESF Database Migration Toolkit - Professional

    1. **多数据库兼容性**:它能够处理多种数据库格式之间的迁移,包括关系型数据库和非关系型数据库,这极大地扩展了其适用范围,满足了多样化的需求。 2. **数据转换**:该工具不仅迁移结构,还负责转换数据类型,...

    MySQL Migration Toolkit v2.1

    8. **批量迁移**:对于包含多个数据库或大量表的情况,工具支持批量迁移,大大提高了迁移效率。 9. **日志和报告**:在迁移过程中,工具会记录详细的操作日志,以便于问题排查和审计,同时生成迁移报告,展示迁移的...

    migration:瀚高数据库迁移工具,用于多种数据库类型(mysql、oracle等)迁移到瀚高数据库

    2、打开 migration 工具 3、点击帮助菜单,可查看使用说明文档,如下图所示 二、迁移步骤: 1、新建组,随便起名。 2、数据库连接,新建 源库 MySQL 连接。 3、新建 目标库 HGDB 连接。 4、新建数据库迁移任务,选择...

    搬迁神器—网络搬迁工具network_migration_tool.zip

    2. **配置备份**:它可以对发现的设备进行配置备份,保存为标准格式,方便后续的分析和对比。 3. **配置比较**:NMT能对比新旧网络配置,找出差异,帮助用户快速定位需要修改的部分。 4. **命令翻译**:对于华为...

    mysql数据库移植工具(MySQL.Migration.Toolkit.v2.3)

    MySQL数据库移植工具(MySQL.Migration.Toolkit.v2.3)是一款专为数据库迁移设计的强大软件,主要功能在于实现不同数据库系统间的数据迁移,包括从其他数据库系统迁移到MySQL以及从MySQL迁移到其他数据库系统。...

    ibm DB2 migration toolkit

    【IBM DB2 Migration Toolkit】是IBM提供的一款强大的数据库迁移工具,专为帮助用户从其他数据库系统,如Oracle、SQL Server等迁移到DB2数据库而设计。这个工具集旨在简化迁移过程,减少潜在风险,提高迁移效率,...

    mysql-migration-toolkit-noinstall-1.1.25-win32 ORACLE转MYSQL工具

    2. **创建迁移项目**:在工具中新建一个迁移项目,指定源(ORACLE)和目标(MYSQL)数据库信息。 3. **分析和转换**:工具会扫描ORACLE数据库并生成迁移计划,用户可查看并修改转换规则。 4. **预迁移检查**:在...

    SwisSQL Data Migration 6.7 破解工具

    SwisSQL Data Migration 6.7 的 破解工具 需要安装java jdk 1.6+ 输入用户名,单据generator会生产注册码 本工具只为学习研究。

    MySql migration to Oracle Tool

    2. **数据预处理**:根据获取的元数据,工具会生成相应的Oracle兼容的DDL语句,包括创建表、索引等,同时对数据进行必要的格式转换。 3. **数据迁移**:在目标Oracle数据库上执行生成的DDL语句,创建对应的表结构。...

    MySQL Migration Toolkit免安装版

    MySQL Migration Toolkit是一款强大的工具,专为数据库管理员和开发人员设计,用于将各种其他数据库系统的数据迁移到MySQL。这款免安装版本使得用户无需正式安装即可直接使用,方便快捷。以下是关于MySQL Migration ...

    Profwiz转移用户配置文件工具Domain Migration User Profile tools 3.6

    2. **批量操作**:对于大型组织,Profwiz3.6支持批量迁移,可以一次性处理多个用户的配置文件,显著节省时间。 3. **安全可靠**:在迁移过程中,Profwiz3.6会保持数据完整性,避免信息丢失或损坏。同时,它还能在...

    瀚高迁移工具migration-4.1.4

    瀚高迁移工具migration-4.1.4是专为数据迁移设计的一款实用软件,它支持从MySQL、PostgreSQL和Oracle等主流数据库系统中,将数据安全、高效地迁移到瀚高(HighGo)数据库中。瀚高数据库是一款国产的、自主知识产权的...

    SQL Server Migration Assistant 2005 for Oracle V4.0迁移工具

    - **SSMAExtPack-2.0.0.380.exe**:这个扩展包可能包含了额外的组件或插件,以增强SSMA的功能,比如提供对更多版本的Oracle数据库的支持,或者增加特定的转换规则。 在实际操作中,用户首先需要运行SSMA的安装程序...

Global site tag (gtag.js) - Google Analytics