假设我在生产数据库中有两个表TABLE_A
和TABLE_B
,它们的主键分别是{{1}}和A_ID
。
我想使用B_ID
命令将TABLE_A
和TABLE_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建议将更新移至答案)
答案 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子句并指定每个子句也适用。
答案 2 :(得分:0)
尝试一下
expdp系统/ xxxxxx表= TABLE_A查询= \“ WHERE A_ID = 1001 \”