http://www.sqler.com/126711

이번에 소개해 드릴 내용은? SELECT INTO를 사용한 테이블 복사 입니다.

사실 SELECT INTO를 사용한 결과셋 복사가 더 정확한 의미 겠지만..

이렇게 그냥 주제를 잡았습니다.

간단합니다.

먼저...

 

SELECT * FROM titles

 

그럼 결과가 쭈욱~~~ 보일 겁니다.

이 결과를 그대로 하나의 테이블로 생성 하려면?

여러가지 방법이 있겠지요? 추후 배우실 데이터 트랜스퍼 서비스(DTS)를 쓰시거나..

BCP로 복사 하시거나.. 등등등의 방법이 있을 겁니다.

그런 방법이 있다는 것만 알아 두시고...

이곳에선? SELECT INTO 를 사용한 복사를 배우실 겁니다.

 

 

SELECT * INTO konan_titles_test FROM titles

 

그럼 결과로  (18개 행 적용됨) 이런 결과가 보이실 겁니다.

그리고 이어서..

 

SELECT * FROM konan_titles_test

 


해보시면?  어떠세요? titles 테이블과 완전히 같은 데이터가 들어 있는

konan_titles_test 테이블이 보이시나요? 

이것이 바로 SELECT INTO의 방식 입니다.

 

지금 여러분이 테스트 하는 데이터베이스인 Pubs 데이터베이스는 조금 특별한 데이터

베이스 입니다. 

이 SELECT INTO 구문을 기본적으로 사용 가능으로 되어 있다는 의미 입니다.

 

sp_dboption pubs

 

결과 부분을 보시면?

The following options are set: 
----------------------------------- 
select into/bulkcopy
trunc. log on chkpt.
torn page detection
auto create statistics
auto update statistics

이렇게 되어 있을 겁니다.

여러분이 앞으로 DB를 생성하게 되면 위의 Pubs데이터베이스에 걸린 옵션과

다를 겁니다. 이때 처리를 위해...

 

-- 사용 방식은 sp_dboption '디비명', '사용할 옵션명', '활성화 비활성화 옵션'

sp_dboption 'pubs', 'select into/bulkcopy', 'true'

 

이런 식으로 Pubs 데이터베이스에 대해서 SELECT INTO와 BULK COPY 옵션을

TRUE로 한후 SELECT INTO를 사용 하겠다 라고 명시한후 사용 하셔야 하며..

 

SELECT INTO 작업을 마치신 후에는...

 

sp_dboption ' pubs', 'select into/bulkcopy', 'false'

 

로 FALSE 시키시는 연습을 꼬옥 하시길 바랍니다.

아울러.. DB_OPTION에 대해서는? 추후 얘기를 또 드리니..

그때 상세히 얘기 드릴 겁니다.

 

SELECT INTO의 구문 정보 입니다.

SELECT INTO

일반적인 데이터 정의 절차를 거치지 않고 테이블을 정의하고 

데이터를 넣는 것을 허용한다.

 SELECT select_list

 INTO new_table_name

 FROM table_list

 WHERE search_conditions

질의 결과를 바탕으로 새로운 테이블을 생성한다.

  - select_list 에서 지정한 컬럼, FROM 절의 테이블, WHERE 절에서 선택 한 행들에 

    바탕을 두고 생성된다.

 

고려사항

 - select into / bulkcopy 데이터 베이스 옵션이 설정되어 있을 때만, 

    새로운 영구 테이블을 생성한다.

 - 임시 테이블에 대해서는 select into / bulkcopy 옵션이 설정되어 있지 않은 경우에도 

    SELECT INTO 문을 수행할 수 있다.

 - 이미 존재하는 테이블로 행을 보내여려면 반드시 INSERT 를 사용해야 한다.

 - select_list 에 있는 컬럼이 이름이 없는 경우에는 생성된 테이블에서 해당 컬럼에는 

    이름이 지정되지 않는다.

 - “SELECT * FROM tablename”에 의해서만 참조될 수 있다.

 - 삽입된 행들은 로그에 기록되지 않는다.

 

 

--특정 결과셋만 konan_test2 테이블로 생성

SELECT title_id, title, type INTO konan_test2 FROM titles where price > 10

 

 

코나니의 경우 SELECT INTO를 종종 사용 합니다.

테이블에 대한 어떤 처리를 하고 싶을때... 주로 다른 업체의 데이터 가공 처리시..

SELECT INTO를 사용해 여러가지를 가공한 데이터를 테이블로 만들어

처리할 경우 입니다... 종종 사용할 일이 있으실 테니..

도움 되시길 바랍니다.

+ Recent posts