대용량 데이터 베이스를 시뮬레이션해서 SQL 튜닝을해볼려고 합니다. 예를 들어, EMP라는 테이블에 FNAME, LNAME, TITLE, PIN, etc. 의 컬럼이 있을때, 자동으로 테이블에 맞춰서 데이터 1000만개 정도 만드는 방법에는 어떤것들이 있을까요?
님이 제시한 테이블은 정확한 데이터 타입을 알 수 없어 다음과 같다 가정 하에... create.sql 을 실행, 테이블을 작성 한 후, insert.sql 을 실행 시키면 원하는 수 만큼 데이터를 입력 할 수가 있습니다. 아래의 샘플에서는 7000건이 입력 됩니다. ----------------------------------/* create.sql */------------------ CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7, 2), COMM NUMBER(7, 2), DEPTNO NUMBER(2)); ----------------------------------/* insert.sql */------------------ SET SERVEROUTPUT ON DECLARE
V_COUNT NUMBER; BEGIN DBMS_OUTPUT.PUT_LINE('** INSERT START ***************************************'); FOR I IN 1..7000 LOOP -- 원하는 데이터 건수 입력 INSERT INTO EMP (EMPNO, ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES (I, 'ORACLE','NOTHING',7788, SYSDATE,6000,NULL,10); V_COUNT := I; END LOOP; DBMS_OUTPUT.PUT_LINE('-----------------------------------------------------'); COMMIT; DBMS_OUTPUT.PUT_LINE(V_COUNT||' " ROWS INSERTED'); END; / 쉘에서 입력 하자면 다음과 같이 하면 되겠습니다. 물론 유저/패스워드를 지정 해 주심 되구요. 아래의 샘플에서는 500 건이 입력 됩니다 #################### /* iinsert.sh ####################################### CNT=1 TOTAL=500 # 입력 건 수 체크 while [ $CNT -le $TOTAL ]; do echo "++++++++++++++++ Count: $CNT/$TOTAL ++++++++++++++++" CNT=`expr $CNT + 1` ( echo "INSERT INTO T_EMP (EMPNO, ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES (7001, 'TIGER','JPRS',7788, SYSDATE,6000,NULL,10);" ) | time sqlplus 유저/패스워드 done exit