我可以和如何使用IntelliJ数据库工具查询多个数据库模式吗?

时间:2016-09-06 13:38:49

标签: database oracle intellij-idea liquibase

我使用IntelliJ创建我的应用程序和Oracle数据库。

目前,我必须将数据从较旧的数据库SCHEMA迁移到较新的数据库SCHEMA。表和列已更改,我想创建一个IQBase脚本,该脚本将在安装新应用程序版本期间在不同的服务器上运行。

所以我有了旧OLD_SCHEMA中的数据(我们将讨论SELECT),我希望INSERT INTO这些数据,转换它们并NEW_SCHEMA { {1}}。所以我想做类似的事情:

INSERT INTO NEW_SCHEMA.TABLE_X (........) SET (SELECT ..... FROM OLD_SCHEMA.TABLE_Y)

但是当我试图在与IntelliJ捆绑在一起的数据库工具中执行这种查询时,我得到一个错误解释,即存在一个不存在的表或视图。

[2016-09-06 15:22:29] [42000][942] ORA-00942: Table ou vue inexistante

这似乎很正常,因为当我创建一个SQL控制台文件来测试我的查询时,它会链接到两个模式中的一个。

那么,我可以,如果可以的话,如何执行我的查询以使用两个模式的数据?

谢谢。

PS:导入,导出不是解决方案,结构发生了很大变化。

2 个答案:

答案 0 :(得分:2)

要使用两个模式,您的USER必须在两个模式中授予(在SELECT,INSERT等上)。

你也使用错误的sintax for INSERT语句,你需要像这样使用sintax

INSERT INTO NEW_SCHEMA.TABLE_X (........) SELECT ..... FROM OLD_SCHEMA.TABLE_Y

答案 1 :(得分:1)

您无法查询其他架构中的表,除非您有权这样做。如果您连接到new_schema并想要查询old_schema.table_y,则需要在old_schema.table_y上选择权限。

为此,请连接到old_schema并授予这些权限。

grant select on table_y to new_schema;

现在您的查询应该有效(没有set语句)。

有关语法示例,请参阅此链接。 Oracle insert from select into table with more columns