Big data insert sql script
대용량 테이블 암복호화 테스트 해보고 싶음. 그럴려면 주민번호를 100만개정도 생성해야함.
주민번호를 자동으로 생성하는 sql 스크립트를 만들러 기초부터 gogo
구구단 3단 쿼리문을 실행 후 출력 해보고 싶으면 2가지 방법이 있다.
1) SET SERVEROUTPUT ON
2) 왼쪽 상단의 연두색 ‘+’ 기호 클릭
출력결과
PL/SQL 기초 지식은 아래 참조
PL/SQL - 1
실무에서 알아야 할 기술은 따로있다! 오라클SQL과 PL/SQL을 다루는 기술 정리 PL/SQL 정리 시작! 1. PL/SQL 기본구조 오라클 DB를 사용해 프로그래밍을 한다는 것은 SQL과 PL/SQL을 작성하는 것으로 나눌 �
seul96.tistory.com
PL/SQL - 2
l PL/SQL의 사용자 정의 함수 지금까지의 예제는 익명 블록을 사용했는데, 사실 별로 사용하지 않는다. 일반적으로는 이름이 있는 서브 프로그램인 함수나 프로시저를 사용해 비즈니스 로직을 구�
seul96.tistory.com
반복문
반복문에는 LOOP문. WHILE문, FOR문이 있다. 각각의 반복문을 이용하여 구구단 3단 출력 해보자.
- LOOP문
LOOP 처리문; EXIT [WHEN 조건]; END LOOP; |
“EXIT WHEN 조건”을 사용해 WHEN절에서 명시한 조건에 맞을 때 빠져 나가라고 명시할 수 있다.
declare a number := 3; b number := 1; begin loop dbms_output.put_line(a*b); b:=b+1; exit when b>9; end loop; end; |
WHILE문
While 조건 Loop 처리문; End loop; |
declare a number := 3; b number := 1; begin while b<=9 loop dbms_output.put_line(a*b); b:=b+1; end loop; end; |
FOR문
FOR 인덱스 IN [REVERSE]초깃값..최종값 LOOP 처리문; END LOOP; |
REVERSE를 명시하면 순서가 거꾸로 된다.
구구단 3단을 출력하는 익명 블록을 FOR문으로 변경
declare vn_base_num number :=3; begin for i in 1..9 loop dbms_output.put_line (vn_base_num*i); end loop; end; |
하지만!!!!!! 내 목표는 대용량 데이터(주민번호)를 삽입하는 SQL문을 만드는 것이다!!!!!!!!!!!!!
위에서 배운 지식들을 짬뽕해서…… 사용하면…
1단계 : 주민번호 앞 6자리 출력해보기 (DBMS_RANDOM.VALUE라는 내장함수 이용)
declare --주민번호 앞 6자리 저장할 변수 num number(6); begin --10번 반복 for i in 1..10 loop --num에 111111 ~ 999999 랜덤 숫자 저장 NUM := DBMS_RANDOM.VALUE(111111, 999999); --num출력 dbms_output.put_line(num); end loop; end; |
출력결과 :
2단계 : 주민번호 뒷자리 7자리 출력하기 (to_char이라는 내장 함수 이용)
declare --주민번호 앞 6자리 저장할 변수 num number(6); --주민번호 뒷 첫번째 자리 남:1,3 여:2,4 sex number(1); --전체주민번호 문자열로 선언 jumin varchar2(14); begin for i in 1..10 loop --num에 111111 ~ 999999 랜덤 숫자 저장 NUM := DBMS_RANDOM.VALUE(111111, 999999); sex := DBMS_RANDOM.VALUE(1,4); --전체 주민번호: 주민번호 앞 6자리 + 성별+주민번호 앞 6자리 jumin := to_char(num||'-'||sex||num); --주민번호 14자리 출력 dbms_output.put_line(jumin); end loop; end; |
출력결과:
3단계 : 주민번호 실제 테이블에 insert 하기
먼저 TABLE 생성
CREATE TABLE TB_SAMPLE01( JUMIN VARCHAR(50)); |
TB_SAMPLE01에 JUMIN 컬럼 추가
declare num number(6); sex number(1); jumin varchar2(14); begin for i in 1..10 loop NUM := DBMS_RANDOM.VALUE(111111, 999999); sex := DBMS_RANDOM.VALUE(1,4); jumin := to_char(num||'-'||sex||num); --TB_SAMPLE01에 JUMIN 컬럼 추가 INSERT INTO TB_SAMPLE01 VALUES(JUMIN); end loop; end; |
출력결과:
우선 이렇게 랜덤으로 생성된 주민번호는 실제 주민번호는 아니고 엉터리 주민번호이다. 예를 들어 왜냐하면 달은 1월에서 12까지밖에 없고 이런 조건들을 집어넣어주지 않았기 때문이다.
나중에는 실제 주민번호를 만드는 프로시저를.... 만들어 보기로하자...
- 끝 -
오라클 SQL과 PL/SQL을 다루는 기술 보면서 공부 참고했음