매 특정 줄(100줄??) 마다 문자열 삽입하기?
글쓴이: kwon37xi / 작성시간: 수, 2006/06/28 - 2:30오후
제가 유지보수 하고 있는 시스템에서요, 가끔, 사용자들이 엑셀로 몇만 줄짜리 데이터를 보내주면
그걸 INSERT 혹은 UPDATE 문으로 만들어서 DB를 조작하고 하는 일을 합니다.
엑셀 데이터를 쿼리로 바꾸는 것은 뭐 쉽게 됩니다. VI 에서 정규식 써서요.
근데, 데이터를 삽입할께 몇만줄일 경우,
중간 중간 커밋을 안해주면 삽입 속도가 매우 느려져서요...
중간 중간 커밋을 해주려고 하는데요,
예를들어 매 1000 줄마다, 1001번째 줄에 COMMIT; 문을 넣고, 그리고 그 다음 2001줄(실제로는 앞의 COMMIT 문 때문에 2002줄이 되겠죠??)에 COMMIT; 넣고 이런 걸 하고 싶은데요..
VI 혹은 UNIX 명령어를 통해서 그런 작업을 할 수 있는지요?
sed 를 써서 1000 줄 뒤에 COMMIT; 넣는것은 했는데요, 이게, 그 다음번 1000 줄 뒤에는 안들어가더군요..(제가 알아낸 한계입니다... ㅜㅜ)
방법이 있을까요?
Forums:
emacs 사용자라면..
편집할때 반복적인 규칙이 있다면 저는 매크로를 씁니다.
대충 짜보면..
정도 되겠네요.
내공이 좀 있으면 함수도 하나 만들어질것 같은데..
$ cat tmp.txt12345678$ awk
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
혹~~
감사합니다.
Emacs도 좋겠지만, 제가 안써서요, 테스트는 못했봤고요,
awk 너무 잘 되네요.
awk도 공부해봐야 겠네요.
잘 쓰겠습니다.
http://kwon37xi.egloos.com
http://kwon37xi.egloos.com
뒷북..-_-
자삭.
Re: 뒷북
허탈한 일이지요..
kldp에서는 드문 일이 아닙니다^^..
放下着-----
내려놓으려는 마음도 내려놓기
放下着-----
내려놓으려는 마음도 내려놓기
굳이 VIM에서 해야겠다면
:%s/\(.*$\n\)\{1000}/&commit;\r/
newline 문자를 1000번 만날 때마다 commit;을 넣으라는 뜻이지요.
흠.. 테스트해보니 1000 단위에서는 좀 느리군요..
다른 방법으로는,
:.+1000 s/^/commit\r/
위 명령으로 한 번 치환한 다음,
'.'(마침표)를 계속 누르는 겁니다.. 파일이 끝날 때까지(흠.. 노가다에 가까와서 왠지)
역시 폼이 안나네요. 아무래도 GAWK 가 좋겠습니다.
放下着-----
내려놓으려는 마음도 내려놓기
放下着-----
내려놓으려는 마음도 내려놓기
댓글 달기