개발자의 끄적끄적

[oracle] LONG과 CLOB 에 대한 데이터 이전[펌] 본문

개발/sql

[oracle] LONG과 CLOB 에 대한 데이터 이전[펌]

효벨 2020. 1. 23. 03:00
728x90
반응형

[oracle] LONG과 CLOB 에 대한 데이터 이전[펌]

 

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 [최대길이수지정]

해주지않으면 지정된 수만큼만 출력되어져 데이터가 짤려서 들어가게 된다.



출처: https://blog.goodgods.com/81 [개발은 너무해]

반응형
Comments