有没有人知道用于导入旧版Oracle数据库模式的任何特定DSL实现.我试图在我的现有数据库上运行db:schema:dump我想要移植到新的ruby应用程序.然而,耙子在中途消失,没有任何错误.它只是锁定.我开始寻找解决这个问题的最佳方法,并找到了如何为SQLServer覆盖一些内容的示例,但对Oracle来说并不多.
我基本上想要引入模式并从中生成一个脚手架和模型.
有没有更简单的方法来做到这一点,还是我必须发明轮子?
第一个问题 - 您使用的是原始ActiveRecord Oracle适配器还是oracle_enhanced适配器(http://github.com/rsim/oracle-enhanced)?我建议使用oracle_enhanced适配器,因为我在那里对架构转储进行了一些性能改进.
Rails提供了两种架构转储方式:
rake db:schema:dump
这将创建schema.rb文件,其中包含用于模式创建的Rails迁移.在Oracle案例中,它将搜索用户本地模式中的所有表(用户在database.yml中指定),并尝试将Oracle数据类型转换为Rails模型属性类型.如果您有一些Rails不支持的数据类型,那么您可能会丢失它们.但是,如果您想以Rails方式重新设计应用程序,那么这是首选方法.正如我所说的,我在oracle_enhanced适配器中为架构转储提供了一些性能改进,以防大型Oracle数据处理(如果所有架构中有数千个表).
rake db:structure:dump
这将创建SQL模式文件(例如db/development_structure.sql),您可以在其他Oracle数据库中执行(这不适用于其他数据库).这可能是创建模式转储的更快方法,它不会丢失Oracle特定的数据类型.但是通过这种方式,当您将ActiveRecord与此数据库一起使用时,您可能会遇到麻烦,然后会注意到某些数据类型未得到正确处理.因此,我建议使用Rails迁移来维护架构而不是原始SQL.
但是,如果您希望将Rails与某些现有Oracle数据库一起使用,则无需重新创建此模式 - 您只需将database.yml指向此现有数据库模式,然后开始在现有表之上创建ActiveRecord模型.有关如何将Rails与旧版Oracle数据库一起使用的一些提示,请参见http://blog.rayapps.com/2008/09/26/openworld-unconference-presentation-about-rails-on-oracle/.