imp将A表导入B表,但是日志显示B导入B,导致B没有数据

连个服务器安装了两个不同的oracle,分别由连个表空间A和B。
因为A表的数据库我们连接不上,现在要A表的表结构数据导入到B表,只能采用exp/imp的方式。
用exp导出A表后,日志也写的是导出的A表,
exp A/A@XXXX/XXXX CONTENT=METADATA_ONLY file=D:\backup\A.dmp log=D:\backup\A.log LOGTIME=ALL
但是在IPM导入到B表时,日志写的是“正在将 B的对象导入到 B”
imp B/B@XXXX/XXXX file=D:\backup\A.dmp LOG=D:\backup\B.log full=y
导致B表依然是个空表。请问这个是什么问题呢

引用chatgpt内容作答:
从您提供的信息来看,问题可能出在导入操作时的数据文件(D:\backup\A.dmp)和日志文件(D:\backup\B.log)的使用上。

根据您提供的命令和描述,您使用了以下命令进行导出和导入操作:

导出命令:

exp A/A@XXXX/XXXX CONTENT=METADATA_ONLY file=D:\backup\A.dmp log=D:\backup\A.log LOGTIME=ALL

导入命令:

imp B/B@XXXX/XXXX file=D:\backup\A.dmp LOG=D:\backup\B.log full=y

问题可能出在导入命令中,具体表现为导入日志中写着“正在将 B的对象导入到 B”。这似乎表明导入操作的目标数据库是 B 而不是 A。

尽管您在导入命令中指定了数据库用户 B,但是您要确保您正在连接到正确的数据库实例,即数据库 A,才能正确地将 A 表的数据导入到 B 表。

请尝试以下步骤来排除问题:

1、确保您在导入操作之前连接到了正确的数据库实例。您可以使用以下命令切换到正确的数据库实例:

connect A/A@XXXX/XXXX

2、在导入命令中使用 FROMUSER 和 TOUSER 参数,明确指定数据从哪个用户(A)导出到哪个用户(B):

imp B/B@XXXX/XXXX file=D:\backup\A.dmp LOG=D:\backup\B.log fromuser=A touser=B

3、如果数据库实例 B 是一个不同的实例,您可能需要根据情况在导入命令中指定不同的连接信息。

总之,您需要确保在导入操作时,您连接到了正确的数据库实例,并且通过正确的参数配置确保数据从 A 表导入到 B 表。如果问题仍然存在,请提供更多详细信息,我将尽力帮助您进一步解决问题。

1.exp 参数去掉content=metadata_only 该参数仅导出元组数据,不包含记录。
2.imp 参数增加 fromuser=a touser =b

问题应该出在导入过程中的参数设置上。在导出时使用了 METADATA_ONLY 选项,这表示只导出表的元数据(表结构),而不包含实际的数据。
然后,尝试将这个导出的文件(A.dmp)导入到 B 表。然而,在 imp 命令中使用了 full=y 参数,这会尝试导入整个数据库,包括表和数据,而不是只导入表的结构。

试试映射到B表的空间

imp B/B@XXXX/XXXX file=D:\backup\A.dmp 
LOG=D:\backup\B.log full=y TOUSER=B
 REMAP_TABLESPACE=A:B

看看你导出的表文件内容,导出估计就是空的

在导入时,您使用了 imp 命令将导出的数据文件导入到另一个数据库中。在这种情况下,即使您连接到了另一个用户(B),imp 仍然会尝试将导入的对象放在当前连接用户(B)的模式下,因此出现了日志中提到的“正在将 B 的对象导入到 B”。