매 특정 줄(100줄??) 마다 문자열 삽입하기?

kwon37xi의 이미지

제가 유지보수 하고 있는 시스템에서요, 가끔, 사용자들이 엑셀로 몇만 줄짜리 데이터를 보내주면
그걸 INSERT 혹은 UPDATE 문으로 만들어서 DB를 조작하고 하는 일을 합니다.

엑셀 데이터를 쿼리로 바꾸는 것은 뭐 쉽게 됩니다. VI 에서 정규식 써서요.
근데, 데이터를 삽입할께 몇만줄일 경우,
중간 중간 커밋을 안해주면 삽입 속도가 매우 느려져서요...
중간 중간 커밋을 해주려고 하는데요,

예를들어 매 1000 줄마다, 1001번째 줄에 COMMIT; 문을 넣고, 그리고 그 다음 2001줄(실제로는 앞의 COMMIT 문 때문에 2002줄이 되겠죠??)에 COMMIT; 넣고 이런 걸 하고 싶은데요..
VI 혹은 UNIX 명령어를 통해서 그런 작업을 할 수 있는지요?

sed 를 써서 1000 줄 뒤에 COMMIT; 넣는것은 했는데요, 이게, 그 다음번 1000 줄 뒤에는 안들어가더군요..(제가 알아낸 한계입니다... ㅜㅜ)

방법이 있을까요?

lazycoder의 이미지

편집할때 반복적인 규칙이 있다면 저는 매크로를 씁니다.
대충 짜보면..

# 1차수정 ;
C-x (
 
ESC 1000 C-n
 
엔터
 
C-p
 
COMMIT;
 
C-n
 
C-a
 
C-x )
 
C-u C-x e

정도 되겠네요.

내공이 좀 있으면 함수도 하나 만들어질것 같은데..

cinsk의 이미지

$ cat tmp.txt
1
2
3
4
5
6
7
8
$ awk 'NR % 4 == 1 { print "COMMIT;" } { print $0 }' tmp.txt
1
2
3
4
COMMIT;
5
6
7
8
COMMIT;
$ _

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

kwon37xi의 이미지

감사합니다.
Emacs도 좋겠지만, 제가 안써서요, 테스트는 못했봤고요,
awk 너무 잘 되네요.
awk도 공부해봐야 겠네요.
잘 쓰겠습니다.

http://kwon37xi.egloos.com

keizie의 이미지

자삭.

윤봉환의 이미지

허탈한 일이지요..
kldp에서는 드문 일이 아닙니다^^..

放下着-----
내려놓으려는 마음도 내려놓기

放下着-----
내려놓으려는 마음도 내려놓기

윤봉환의 이미지

:%s/\(.*$\n\)\{1000}/&commit;\r/

newline 문자를 1000번 만날 때마다 commit;을 넣으라는 뜻이지요.
흠.. 테스트해보니 1000 단위에서는 좀 느리군요..

다른 방법으로는,

:.+1000 s/^/commit\r/

위 명령으로 한 번 치환한 다음,
'.'(마침표)를 계속 누르는 겁니다.. 파일이 끝날 때까지(흠.. 노가다에 가까와서 왠지)

역시 폼이 안나네요. 아무래도 GAWK 가 좋겠습니다.

放下着-----
내려놓으려는 마음도 내려놓기

放下着-----
내려놓으려는 마음도 내려놓기

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.