甲骨文 exp,使用多个查询导出



>假设我在生产数据库中有 2 个表,TABLE_ATABLE_B,它们的主键分别是A_IDB_ID

我想使用exp命令将一行从TABLE_ATABLE_B导出到转储文件。我想要的数据是以下 2 个查询的结果。

TABLE_A

SELECT * FROM TABLE_A WHERE A_ID = 1001;

TABLE_B

SELECT * FROM TABLE_B WHERE B_ID = 9999;

我四处搜索,只找到以下语法,这些语法很接近,但仍然不完全是我想要的,因为TABLE_B没有列A_ID

exp userid=me/mypass@dbname tables=me.TABLE_A,me.TABLE_B query="WHERE A_ID=1001"

我试过了

exp userid=me/mypass@dbname tables=me.TABLE_A,me.TABLE_B query=me.TABLE_A:"WHERE A_ID=1001",me.TABLE_B:"WHERE B_ID=9999"

但它不起作用,只是出现以下错误

LRM-00112: multiple values not allowed for parameter 'query'

请帮助建议如何从同一转储文件中导出TABLE_ATABLE_B行。


更新

(根据建议将更新移至答案@Alex(

多亏@mehmet建议,我放弃了直接的解决方案,开始寻找变通方法。(我无法使用expdp因为我无权访问数据库服务器。

我创建一个表EXP_ROW_ID如下所示

CREATE TABLE EXP_ROW_ID (ROW_ID VARCHAR(20));

然后我把我要从 2 个表中导出的行的 ROWID

INSERT INTO EXP_ROW_ID SELECT ROWID FROM TABLE_A WHERE A_ID = 1001;
INSERT INTO EXP_ROW_ID SELECT ROWID FROM TABLE_B WHERE B_ID = 9999;

然后我使用以下命令导出转储

exp userid=me/mypass@dbname tables=me.TABLE_A,me.TABLE_B query="WHERE ROWID IN (SELECT T.ROW_ID FROM EXP_ROW_ID T)"

如果您使用的是旧的导出(exp(,则不,您需要为每个表执行单独的导出。

如果您使用的是数据泵 (expdp(,那么是的,您可以指定多个 QUERY 子句并指定每个子句也适用的表。

来源:预言机中的多表导出

试试这个

expdp system/xxxxxx tables=TABLE_A query=\"WHERE A_ID = 1001\">

相关内容

  • 没有找到相关文章

最新更新