oracle如何向一张表导入另一张表的部分数据

比方old 和new 表 表结构不同的,都有对方没有的列 old表很大只需要一部分列,还有一些限定条件 如何写啊

实现的方法和详细的操作步骤如下:

1、第一步,如果要从Oracle实例orcl导出多个dmp文件表,则在打开cmd窗口后,首先设置环境变量以将Oracle实例切换为orcl(设置ORACLE_SID
 = orcl),然后登录到sqlplus
 ,如下图所示,然后进入下一步。

2、其次,完成上述步骤后,可以使用sql语句“select * from dba_directories”以查看当前实例下可用的dmp导出目录。
 导出dmp文件时,可以选择其中之一,如下图所示,然后进入下一步。

3、接着,完成上述步骤后,退出sqlplus并使用命令“expdp”导出需要的数据库表dmp文件,如下图所示,然后进入下一步。

4、最后,完成上述步骤后,就可以将该文件导入实例orcl中的另一个用户,如下图所示。这样,问题就解决了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-10

1、如果我们要从Oracle实例orcl导出几个dmp文件表,那么在打开cmd窗口之后,首先设置环境变量以将Oracle实例切换到orcl(设置ORACLE_SID = orcl),然后登录到sqlplus。

2、登录到sqlplus后,您可以使用sql语句:select * from dba_directories以查看当前实例下可用的dmp导出目录。我们可以在导出dmp文件时选择其中一个。

3、退出sqlplus并使用命令expdp导出我们需要的数据库表dmp文件:expdp EVGIS / EVgis_123 $ @ orcl tables = EV_VERSION,EV_VERSIONFILE directory = DATA_PUMP_DIR dumpfile = test.dmp logfile = test.log。 EVGIS / EVgis_123 $ @ orcl表示用户名/密码@实例名称。

4、导出dmp文件后,我们可以将文件导入实例orcl中的另一个用户。

导入命令:impdp学生/学生目录= DATA_PUMP_DIR table_exists_action = replace dumpfile = test.dmp logfile = test.log remap_tablespace = GIS:Student remap_schema = EVGIS。

Remap_tablespace表示表所在的表空间更改,冒号前面的原始表空间名称,冒号中的目标表空间名称; remap_schema表示更改后的表的用户,冒号前面的原始用户名,冒号后是目标用户名。

本回答被网友采纳
第2个回答  2018-10-10

oracle数据库实现一张表的数据导入到另外一个数据库的表中的方法有很多,在这介绍两个。

第一种,把oracle查询的数据导出为sql文件,执行sql文件里的insert语句,如下:

第一步,导出sql文件:

第二步:用PL/Sql Developer 连接另外一个oracle数据库,打开这个sql文件,全选所有insert语句,执行所有插入sql语句即可:

这种方法试用于插入大多数的数据库,无论是oracle数据库还是sql server数据库都可执行这个sql文件(全是insert语句)。

缺点是:当数据量大的时候,oracle数据库执行这些insert语句,效率会很低。

于是,接下来介绍第二种导入数据的方法,即:导出/导入CSV文件。

第一步,在Pl/Sql Developer查询窗口查询数据,导出成CSV文件:

导出的csv文件如下图:

第二步,把这个csv文件里的数据导入到另外一个数据库里,

用PL/Sql Developer 连接另外一个oracle数据库,

菜单-工具-文本导入器:

第三步,点击“文本导入器”窗口里,点击导入按钮:

第四步,选择导入CSV文件:

导入后,界面如下:

第五步,选择“到Oracle的数据”选项卡,点击下拉框选择“所有者”,点击下拉框选择要导入的表,选择“覆盖重复”,点击“导入”按钮:

导入成功入下图:

点击“关闭“按钮,新建查询窗口,查询数据,验证导入是否成功:

总结:如果是oracle数据库,推荐使用第二种方法,比第一种方法的效率高很多。

第3个回答  推荐于2017-09-03

需要用insert into ... select... where  语句来执行:

如原表中有如下数据:

emp表中有如下数据,其中要将empno为7369的empno和ename插入到test表中。

可以用如下语句:

insert into test (id,name) select empno,ename from emp where empno=7369;
commit;

结果如下,其中红框部分为新加的数据:

第4个回答  2013-08-12
不知道你具体想干什么,如果只是简单的插入数据的话,用
insert into new(列名1,列名2)
select 列1,列2
from old
where 限定条件
就可以了本回答被网友采纳
相似回答