Sql 甲骨文10g。导入数据时为架构创建别名

Sql 甲骨文10g。导入数据时为架构创建别名,sql,oracle,plsql,oracle10g,dbeaver,Sql,Oracle,Plsql,Oracle10g,Dbeaver,我有一个带有Oracle 11的prod box和一个名为a的模式。出于测试目的,我需要prod数据的本地快照。数据不是很大,所以导出不是问题。我已经使用DBeaver将一个数据库导出到一个SQL文件包中,每个表一个,内容如下: INSERT INTO A.TABLE1 (F1, F2, F3) VALUES ('v11', 'v21', 'v31'); INSERT INTO A.TABLE1 (F1, F2, F3) VALUES ('v12', 'v22', 'v32'); INSERT

我有一个带有Oracle 11的prod box和一个名为a的模式。出于测试目的,我需要prod数据的本地快照。数据不是很大,所以导出不是问题。我已经使用DBeaver将一个数据库导出到一个SQL文件包中,每个表一个,内容如下:

INSERT INTO A.TABLE1 (F1, F2, F3) VALUES ('v11', 'v21', 'v31');
INSERT INTO A.TABLE1 (F1, F2, F3) VALUES ('v12', 'v22', 'v32');
INSERT INTO B.TABLE1 (F1, F2, F3) VALUES ('v11', 'v21', 'v31');
INSERT INTO B.TABLE1 (F1, F2, F3) VALUES ('v12', 'v22', 'v32');
等等。问题是出于开发目的,我使用名为B的模式,因此在执行导入时,我需要如下插入:

INSERT INTO A.TABLE1 (F1, F2, F3) VALUES ('v11', 'v21', 'v31');
INSERT INTO A.TABLE1 (F1, F2, F3) VALUES ('v12', 'v22', 'v32');
INSERT INTO B.TABLE1 (F1, F2, F3) VALUES ('v11', 'v21', 'v31');
INSERT INTO B.TABLE1 (F1, F2, F3) VALUES ('v12', 'v22', 'v32');
我知道我可以找到A中的所有INSERT并将其替换为B中的INSERT。这将解决我的问题,但也许我可以为模式B创建某种别名,这样我就可以像以下伪代码一样执行操作:

CREATE ALIAS 'A' FOR SCHEMA 'B'
@TABLE1.sql
@TABLE2.sql
DELETE ALIAS 'A'

不能创建将一个架构映射到另一个架构的别名

您可能会导致生成脚本的工具完全忽略架构名称。然后,您可以在您想要的任何模式中运行INSERT语句 你可以使用不同的工具。例如,Oracle导出和导入实用程序classic或DataPump的参数可以让您从一个模式映射到另一个模式。
然而,我强烈质疑使用与生产中的模式名称不同的模式名称进行开发是否明智。这大大增加了代码升级等工作的复杂性。某些人或某些工具会在查询中无意中将模式前缀添加到表名中。在将脚本从一个环境升级到另一个环境之前,您必须手动编辑脚本,最终会有人出错,并在升级过程中更改代码的功能

无法创建将一个架构映射到另一个架构的别名

您可能会导致生成脚本的工具完全忽略架构名称。然后,您可以在您想要的任何模式中运行INSERT语句 你可以使用不同的工具。例如,Oracle导出和导入实用程序classic或DataPump的参数可以让您从一个模式映射到另一个模式。
然而,我强烈质疑使用与生产中的模式名称不同的模式名称进行开发是否明智。这大大增加了代码升级等工作的复杂性。某些人或某些工具会在查询中无意中将模式前缀添加到表名中。在将脚本从一个环境升级到另一个环境之前,您必须手动编辑脚本,最终会有人出错,并在升级过程中更改代码的功能

编写脚本时完全不使用架构名称。或者,如果它是由某个愚蠢的工具生成的,则从中编辑架构名称:


在驱动程序脚本中,在调用插入脚本之前,请运行ALTER SESSION SET CURRENT_SCHEMA x。

编写脚本时不要完全使用架构名称。或者,如果它是由某个愚蠢的工具生成的,则从中编辑架构名称:


在驱动程序脚本中,在调用插入脚本之前运行ALTER SESSION SET CURRENT_SCHEMA x。

我们在prod中使用J2EE数据源,因此模式名称与应用程序和代码分离。我们的体系结构和开发过程远非理想,我同意你的看法。DBeaver是我笔记本电脑上唯一的工具,它似乎不能省略模式名。不过,谢谢你的快速回答!我们在prod中使用J2EE数据源,所以模式名与应用程序和代码分离。我们的体系结构和开发过程远非理想,我同意你的看法。DBeaver是我笔记本电脑上唯一的工具,它似乎不能省略模式名。不过,谢谢你的快速回答!