我正在尝试使用oracle sql developer将表从一个数据库复制到另一个数据库。我有用户名,密码和SID。
copy from uname1/password1@SID1 to uname2/pwd2@SID2 insert table1 (*) using (select * from message_table);
但是我收到connection failed
错误。
这两个数据库存在于不同的主机主机中(主机名在连接属性方面不同)。
该表有500万条记录,导出/导入过于繁琐
答案 0 :(得分:42)
copy
命令是SQL * Plus命令(不是SQL Developer命令)。如果您为SID1和SID2设置了tnsname条目(例如尝试tnsping),您应该能够执行命令。
另一个假设是table1与message_table具有相同的列(并且列只有以下数据类型:CHAR,DATE,LONG,NUMBER或VARCHAR2)。此外,使用insert命令,您需要关注主键(例如,您没有插入重复记录)。
我在SQL * Plus中尝试了以下命令的变体(没有错误):
copy from scott/tiger@db1 to scott/tiger@db2 create new_emp using select * from emp;
执行上述语句后,我还截断了new_emp表并执行了这个命令:
copy from scott/tiger@db1 to scott/tiger@db2 insert new_emp using select * from emp;
使用SQL Developer,您可以执行以下操作来执行类似的方法来复制对象:
在工具栏上,选择工具>数据库副本。
使用您想要的复制选项标识源和目标连接。
对于对象类型,选择表格。
复制命令方法是旧的,其功能不会随着新数据类型的发布而更新。目前有许多方法可以解决这个问题,例如Oracle的数据泵(即使是表格)。