Technical NOTE
[Shell] insert 문장으로 된 sql파일에 commit 추가하기 본문
DB LINK를 이용해서 ITAS로 Oracle의 데이타를 Tibero로 이관 작업을 하는 중에
ITAS 다음에 바로 COMMIT을 주고 싶었는데,
INSERT INTO TB0001 SELECT * FROM TB0001@ORA_DEV; COMMIT;
이런식으로 한 줄로 출력할 경우 문법 에러가 발생하게 된다.
그래서 짝수 번째 줄에 COMMIT; 문장을 출력해주는 스크립트를 꼼수로 작성해 보았다.
아래는 ITAS로 이루어진 itas_gen_sql.sql 파일
INSERT INTO USER1.TB0001 SELECT * FROM USER1.TB0001@ORA_DEV;
INSERT INTO USER1.TB0002 SELECT * FROM USER1.TB0002@ORA_DEV;
INSERT INTO USER1.TB0003 SELECT * FROM USER1.TB0003@ORA_DEV;
INSERT INTO USER1.TB0004 SELECT * FROM USER1.TB0004@ORA_DEV;
INSERT INTO USER1.TB0005 SELECT * FROM USER1.TB0005@ORA_DEV;
INSERT INTO USER1.TB0006 SELECT * FROM USER1.TB0006@ORA_DEV;
꼼수로 맨 마지막 글자가 세미콜론(;) 임을 이용해서 세미콜론뒤에 콜론을 하나더 붙여서, 콜론을 개행처리한 후 COMMIT; 을 추가하였다.
cat itas_gen_sql.sql | sed 's/\;/\;\:/g' | tr ':' '\n' | sed 's/^$/commit\;/g' > itas_gen_sql.sql_commit.sql
그럼 itas_gen_sql_commit.sql 파일은 아래와 같이 작성되어 있다.
INSERT INTO USER1.TB0001 SELECT * FROM USER1.TB0001@ORA_DEV;
COMMIT;
INSERT INTO USER1.TB0002 SELECT * FROM USER1.TB0002@ORA_DEV;
COMMIT;
INSERT INTO USER1.TB0003 SELECT * FROM USER1.TB0003@ORA_DEV;
COMMIT;
INSERT INTO USER1.TB0004 SELECT * FROM USER1.TB0004@ORA_DEV;
COMMIT;
INSERT INTO USER1.TB0005 SELECT * FROM USER1.TB0005@ORA_DEV;
COMMIT;
INSERT INTO USER1.TB0006 SELECT * FROM USER1.TB0006@ORA_DEV;
COMMIT;
TIP 으로 참고하길 바람
- 작성일 : 2018년 8월 14일
'데이터베이스 > Tibero' 카테고리의 다른 글
[Shell] sql 목록 파일을 split 한 후 xaa로 된 파일명 끝에 .sql 붙이기 (0) | 2018.08.14 |
---|---|
[Shell] owner의 전체 table을 truncate 시키는 문장 생성 shell (0) | 2018.08.14 |
[Shell] Tibero에서 쿼리결과를 CSV 파일로 만드는 Shell Script (0) | 2018.08.10 |