질문 :
답변 :
먼저 테이블을 생성해줍니다.
그리고 insert하려는 쿼리의 row수가 얼마나 되는지 알아봅니다.
위 쿼리의 결과의 정수부분만 아래 쿼리의 level 뒤에 넣어줍니다.
PS) 참고로 날짜가 년월일밖에 나오지 않는다면 아래와 같이 세션의 날짜포맷을 변경해줍니다.
질문과 답변 원문 : http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=105498493
테이블 A에 1,2,3,4,5,6,7 이라는 컬럼이 있습니다.
1,2,3 에는 그냥 고정값 a,b,c,가 각각 들어가고
4에는 해당 날짜 시간
5,6,7에는 5에는 4에서 적힌 년, 6에는 4에서 찍힌 월,7에는 4에서 찍힌 일을 넣을려고 합니다.
1 | 2 | 3 | 4 | 5 | 6 | 7 |
a | b | c | 2009-09-05 00:00:30 | 2009 | 09 | 05 |
a | b | c | 2009-09-05 00:01:00 | 2009 | 09 | 05 |
a | b | c | 2009-09-05 00:01:30 | 2009 | 09 | 05 |
.
.
.
.
이런식으로 해서 30초 4컬럼에 30초 간격으로 오늘 날짜 까지 데이터를 30초 간격으로 넣어줄려고 하는데;;
어떻게 해야 하는지 모르겠네요.;;
데이터 출력을 위해서 임의의 값을 넣는건데.. 5,6,7 컬럼은 4의 값을 넣어야하고;;
2009년 9월부터 해서 오늘 일까지 30초 간격으로 데이터 넣는 방법좀 가르쳐주세여.ㅜ_ㅜ
데이터가 너무 많아서 인서트 적기는 힘드네요..ㅜ_ㅜ
부탁드리겠습니다
답변 :
먼저 테이블을 생성해줍니다.
SQL> create table t1(col1 varchar2(1),
col2 varchar2(1),
col3 varchar2(1),
col4 date,
col5 varchar2(4),
col6 varchar2(2),
col7 varchar2(2));
col2 varchar2(1),
col3 varchar2(1),
col4 date,
col5 varchar2(4),
col6 varchar2(2),
col7 varchar2(2));
그리고 insert하려는 쿼리의 row수가 얼마나 되는지 알아봅니다.
SQL> select (sysdate-to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS'))*24*60*60/30 "level"
from dual;
from dual;
위 쿼리의 결과의 정수부분만 아래 쿼리의 level 뒤에 넣어줍니다.
SQL> insert into t1
select 'a','b','c',
to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30,
to_char(to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30, 'YYYY'),
to_char(to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30, 'MM'),
to_char(to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30, 'DD')
from dual
connect by level <= 위 결과의 정수부분 넣는 곳;
select 'a','b','c',
to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30,
to_char(to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30, 'YYYY'),
to_char(to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30, 'MM'),
to_char(to_date('2009-09-05 00:00:30','YYYY-MM-DD HH24:MI:SS')+(level-1)/24/60/60*30, 'DD')
from dual
connect by level <= 위 결과의 정수부분 넣는 곳;
PS) 참고로 날짜가 년월일밖에 나오지 않는다면 아래와 같이 세션의 날짜포맷을 변경해줍니다.
SQL> alter session set nls_date_format = 'DD-MON-RR HH24.MI.SS';
질문과 답변 원문 : http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=105498493
'Oracle > 기타' 카테고리의 다른 글
database의 feature의 사용유무 체크뷰 (0) | 2010.05.04 |
---|---|
데이터베이스 명의 최대 바이트 수는? (0) | 2010.04.01 |
import 성능 향상시키는 방법 (0) | 2010.02.11 |
reorganization (0) | 2010.02.11 |
Read the alert log with SQL (0) | 2010.01.13 |