Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否可以将oracle数据库包转储到db模式(ruby on rails)?_Sql_Ruby On Rails_Oracle_Unit Testing - Fatal编程技术网

Sql 是否可以将oracle数据库包转储到db模式(ruby on rails)?

Sql 是否可以将oracle数据库包转储到db模式(ruby on rails)?,sql,ruby-on-rails,oracle,unit-testing,Sql,Ruby On Rails,Oracle,Unit Testing,我尝试测试我的rails应用程序。在生产中,它可以在现有的只读oracle数据库上工作。我的问题是,在原始数据库中有一个oracle包,其中包含一些函数,这些函数在复杂生成的sql语句中引用。我使用sql语句从数据库中获取一些特殊数据 包pa包含一些函数的定义,如A,并在sql语句中引用,例如 SELECT pa.A(SUM(W1),'F',SUM(W2),'F') AS F1, W3 AS F2 FROM table1; 是否有可能将包包含在schema文件或其他文件中,以便在使用ra

我尝试测试我的rails应用程序。在生产中,它可以在现有的只读oracle数据库上工作。我的问题是,在原始数据库中有一个oracle包,其中包含一些函数,这些函数在复杂生成的sql语句中引用。我使用sql语句从数据库中获取一些特殊数据

pa
包含一些函数的定义,如
A
,并在sql语句中引用,例如

 SELECT pa.A(SUM(W1),'F',SUM(W2),'F') AS F1, W3 AS F2
 FROM  table1;

是否有可能将包包含在schema文件或其他文件中,以便在使用rake:test构建数据库时加载包?

简短的回答是否。至少schema.rb文件中没有。但是,您可以在Structure.rb中使用数据库的特定转储实用程序并将其输出放入Structure.rb文件

摘自:

但是有一个折衷办法:db/schema.rb不能表示特定于数据库的项,例如外键约束、触发器或存储过程。在迁移过程中,您可以执行自定义SQL语句,但模式转储程序无法从数据库中重建这些语句。如果您正在使用这样的功能,那么应该将模式格式设置为:sql

不使用活动记录的模式转储程序,而是使用特定于数据库的工具(通过db:structure:dump-Rake任务)将数据库的结构转储到db/structure.sql中。例如,对于PostgreSQL,使用pg_dump实用程序。对于MySQL,该文件将包含各种表的SHOW CREATE TABLE输出

加载这些模式只是执行它们包含的SQL语句的问题。根据定义,这将创建数据库结构的完美副本。但是,使用:sql模式格式将阻止将模式加载到RDBMS中,而不是用于创建模式的RDBMS中