我正在使用Oracle.ManagedDataAccess从C#连接到Oracle DB。
我需要:
基本上,我需要将3种不同模式(每个使用不同的凭据)中的表中的所有数据复制到第四种模式中的一个表中。我不需要在从架构A / B / C读取数据并将其插入X之间进行修改的数据-只是一个直接副本。所有4个表都具有相同的结构(DDL)。
我当时正在考虑使用3个数据集作为中间步骤,但是也许可以更容易地做到这一点?
答案 0 :(得分:1)
这可以完全在数据库中完成,而无需通过外部应用程序。
从具有适当权限的用户授予A
,B
和C
的权限:
GRANT SELECT ON A.T TO X;
GRANT SELECT ON B.T TO X;
GRANT SELECT ON C.T TO X;
来自用户X
:
INSERT INTO X.T
SELECT * FROM A.T;
INSERT INTO X.T
SELECT * FROM B.T;
INSERT INTO X.T
SELECT * FROM C.T;
或作为单个语句:
INSERT INTO X.T
SELECT * FROM A.T UNION ALL
SELECT * FROM B.T UNION ALL
SELECT * FROM C.T;
从具有适当权限的第一个用户开始:
REVOKE SELECT ON A.T FROM X;
REVOKE SELECT ON B.T FROM X;
REVOKE SELECT ON C.T FROM X;