StoryCode

linux.append syntax) shell 에서 파일 각 줄끝에 새로운 문자열 추가

Shell Script, Command, Batch, 쉘스크립트, 배치
반응형

# 참조 : https://cafe-de-java.tistory.com/7?category=757531

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 으로 참고하길 바람

반응형