gpt4 book ai didi

ruby-on-rails - 使用 db :schema:dump using rake 在遗留 oracle 数据库上进行模式转储

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:59 26 4
gpt4 key购买 nike

有谁知道用于导入遗留 Oracle 数据库模式的任何特定 DSL 实现。我试图在我现有的数据库上运行 db:schema:dump 我想移植到一个新的 ruby​​ 应用程序。然而, rake 在没有任何错误的情况下死了大约一半。它有点锁定。我开始寻找解决这个问题的最佳方法,并找到了如何为 SQLServer 覆盖某些内容但为 Oracle 覆盖的内容不多的示例。

我基本上想引入模式并从中生成脚手架和模型。

有没有更简单的方法来做到这一点,还是我必须自己发明轮子?

最佳答案

第一个问题 - 您使用的是原始 ActiveRecord Oracle 适配器还是 oracle_enhanced 适配器 (http://github.com/rsim/oracle-enhanced)?我建议使用 oracle_enhanced 适配器,因为我在那里对模式转储进行了一些性能改进。

Rails 提供了两种模式转储方式:

rake db:schema:dump

这将使用 Rails 迁移创建 schema.rb 文件以创建模式。在 Oracle 情况下,它将搜索用户本地模式中的所有表(用户在 database.yml 中指定)并尝试将 Oracle 数据类型转换为 Rails 模型属性类型。如果你有一些 Rails 不支持的数据类型,那么你可能会丢失它们。但是,如果您想以 Rails 的方式重新设计您的应用程序,那么这是首选方法。正如我所说的,我在 oracle_enhanced 适配器中对大型 Oracle 数据字典(如果所有模式中有数千个表)的模式转储进行了一些性能改进。

rake db:structure:dump

这将创建您可以在其他 Oracle 数据库中执行的 SQL 模式文件(例如 db/development_structure.sql)(这不适用于其他数据库)。这可能是创建模式转储的更快方法,并且不会丢失 Oracle 特定的数据类型。但是这样一来,当您将 ActiveRecord 与该数据库一起使用时,您以后可能会遇到麻烦,然后您会注意到某些数据类型没有得到正确处理。因此,我建议使用 Rails 迁移来维护模式而不是原始 SQL。

但是,如果您想将 Rails 与某些现有的 Oracle 数据库一起使用,则无需重新创建此模式 - 您只需将 database.yml 指向此现有的数据库模式,然后开始在现有表的基础上创建 ActiveRecord 模型。参见 http://blog.rayapps.com/2008/09/26/openworld-unconference-presentation-about-rails-on-oracle/有关如何将 Rails 与遗留 Oracle 数据库结合使用的一些技巧。

关于ruby-on-rails - 使用 db :schema:dump using rake 在遗留 oracle 数据库上进行模式转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/250545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com