COPY FROM <db> TO <db> <opt> <table> {(<cols>)} USING <sel>
example:copy from scott/tiger@henrydb to scott/tiger@henrydb create emp2 using select from emp;
example:copy from scott/tiger@henrydb to scott/tiger@henrydb create emp2 using select from emp;
解决方案 »
- 变态问题
- 求一查询方案的SQL语句具体实现
- 请看看以下代码,不明其原因!
- 求助:关于“ORA-12154: TNS: 无法处理服务名”的问题
- 怎么安装oracle?
- 各位大侠,小弟想搜索前100条记录,为什么使用select top 100 * from jobs 为什么总报错
- 在程序中链接不上ORACLE,可能的原因有什么,请各位帮忙!(能提供链接方法更好,ASP.NET--C#)
- 在optimizer_mode=choose情况下,查询时为什么不会使用到索引!
- 请帮我解决这个SQL语句的问题!谢谢
- 简单问问
- 请教关于如何构造“获取带条件查询出来的某个记录的前一条或后一条记录”的sql语句
- 关于SELECT语句使用动态表名的问题?
这两个有什么区别?还是没懂.
例子:
sqlplus test/test@query;
copy from test/test@master insert test using select * from test;
@query @master 是两个服务器
COPY FROM|TO LOGIN CREATE|APPEND|INSERT|REPLACE TABLENAME USING SELECT_STATEMENT
FROM和TO选其中一个,表明是从哪里选择或向哪里复制,如FROM SCOTT/TIGGER@SERVICENAME
CREATE:生成一个新的表,不管表是否存在,如果不存在,则创建,如果存在,则删除后创建;
APPEND:如果目标表不存在就创建;
INSERT:首先要求目的表存在,如果不存在,则报错,此命令仅向表中做插入操作;
REPLACE:在复制前,先将目标表中的数据删除,然后再复制;
USING后的子句是表明数据来源,请看下例:
COPY TO SYSTEM/MANAGER@SERNAME CREATE TABLE2 USING SELECT * FROM TEST1;
注意:
1. 即使只在同一库中复制,也要指明服务名,所以必须建立一个指向本地库的服务;
2. 整个语句应该写在同一行,这不同于一般的SQL语句,是不可以换行的。
3. 要用SET LONG LENGTH来设定每次COPY时对LONG的支持的字节数。如果不做特殊说明,默认值为80,这是不能接受的,可以考虑在COPY过程中最大需要多大,如果想定为2M,则写成:SET LONG 2000000;
建议:如果需要复制的表非常大,可以将SELECT子句上加上WHERE子句限制每次复制的记录数,分几次导入一个大的表是一个不错的主意,因为当大量操作时,对SYSTEM,TEMP,RBS等表空间的要求都非常大,经常会出现导入很长时间后发生因为表空间不足而失败的现象,且由于很多操作属于事务型,所以一旦失败,所有的操作可能均白费。