Oracle exp,导出多个查询

时间:2017-08-05 15:26:20

标签: oracle oracle-export-dump

假设我在生产数据库中有两个表TABLE_ATABLE_B,它们的主键分别是{​​{1}}和A_ID

我想使用B_ID命令将TABLE_ATABLE_B中的行导出到转储文件。我想要的数据是跟随2个查询的结果。

TABLE_A

exp

表-B

SELECT * FROM TABLE_A WHERE A_ID = 1001;

我搜索了一下,发现只有以下语法很接近,但仍然不是我想要的,因为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_A中导出同一个转储文件中的行。

更新

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

3 个答案:

答案 0 :(得分:2)

感谢@mehmet的建议,我放弃了直接的解决方案并开始寻找解决方案。 (我无法使用train_test_split,因为我无法访问数据库服务器。

我创建了一个表expdp,如下所示

EXP_ROW_ID

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

CREATE TABLE EXP_ROW_ID (ROW_ID VARCHAR(20));

然后我使用以下命令

导出转储
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;

答案 1 :(得分:1)

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

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

来源:Multiple table export in oracle

答案 2 :(得分:0)

尝试一下

expdp系统/ xxxxxx表= TABLE_A查询= \“ WHERE A_ID = 1001 \”

相关问题