LONG과 CLOB 에 대한 데이터 이전.

2011. 1. 4. 11:34Oracle/Oracle Tip

반응형
CLOB 같은 경우는 일반적으로 CTAS 가 가능하다.
그러나 LONG형은 불가능하다. 예전에는 export/import를 통하여 데이터를 이전시키는 경우가 있었다.
아래와 같은 명령어로 인하여 COPY가 가능하게 되었다.

copy from scott/tiger@prod create test_long2 using select * from test_long;

scott/tiger@prod LONG형 테이블을 가져올 데이터 베이스의 계정을 말한다.

그러나 이 명령어는 CLOB 포맷의 컬럼은 COPY가 불가능하다.

다음과 같은 메세지가 보여지게 된다.

SQL> scott/tiger@prod

Connected.

SQL> create table test_long
  2  (a varchar2(20),
  3  b number,
  4  c number(10,2),
  5  d clob,
  6  e long)
  7  /

Table created.

SQL> insert into test_long values('aaa',1,2.5,'asdfasdfsadf','asdfasdfasdfasdf');

1 row created.

SQL> commit;

Commit complete.

SQL> conn hr/hr@prod
Connected.
SQL> copy from scott/tiger@prod create test_long2 using select * from test_long;

Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 80. (long is 80)

CPY-0012: Datatype cannot be copied

SQL> copy from scott/tiger@prod create test_long2 using select a,b,c,e from test_long;  --CLOB형 컬럼을 뺐음.

Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 80. (long is 80)
Table TEST_LONG2 created.

   1 rows selected from scott@prod.
   1 rows inserted into TEST_LONG2.
   1 rows committed into TEST_LONG2 at DEFAULT HOST connection.

SQL>

※ 주의해야 할 점.
set long [최대길이수지정]
해주지않으면 지정된 수만큼만 출력되어져 데이터가 짤려서 들어가게 된다.
반응형

'Oracle > Oracle Tip' 카테고리의 다른 글

Range 파티션 테이블 및 테이블 스페이스 삭제 script  (0) 2011.04.14
long형 replace  (0) 2011.01.24
tablespace 생성 스크립트  (0) 2010.04.30
테이블 read only 설정  (0) 2010.01.27
1년치 날짜 생성.  (0) 2010.01.14