제   목 : 쉘 프롬프트에서 SELECT 쿼리로 DB 데이터 추출후 UPDATE 쿼리문 파일 만들기

구   분 : 운영 tip
작성자 : 이선규 (neosky) (neosky(at)smileserv.com, admin(at)nple.com,
http://seroot.com)
작성일 : 2010년 8월 18일




주로 자동화된 스크립트에서 쓰이는 것으로
특정시간에 특정쿼리로 추출한 데이터를 UPDATE나 INSERT 쿼리문으로 만들때 쓰입니다.


[명령형식]

1. SELECT 쿼리로 추출한 데이터 저장

mysql -B -u[아이디] -p[비밀번호] [DB이름] -e "[SELECT 쿼리문]" | perl -pe 's\t/,/g' > [추출 파일 이름]


2. SELECT 쿼리로 1차 추출한 데이터를 UPDATE/INSERT 쿼리문에 대입하여 쿼리 파일 생성

mysql -B -u[아이디] -p[비밀번호] [DB이름] -e "[SELECT 쿼리문]" | perl -pe 's\t/,/g' | awk -F ',' '{printf "[UPDATE/INSERT 쿼리문];\n", $1, $2, ... $n}' > [추출 파일 이름]


[사용예]

mysql -B -uroot -pserootpassword shop -e "SELECT id, sale_quantity, view FROM shop_products" | perl -pe 's/\t/,/g' |awk -F ','  '{printf "UPDATE shop_products SET id='"'"'%s'"'"',sale_quantity='"'"'%s'"'"',view='"'"'%s'"'"' WHERE shop_products.id='"'"'%s'"'"';\n", $1, $2, $3, $1}' > update_query.sql

* UPDATE 또는 WHERE 절 이후 컬럼명= 이후는  ' " ' " ' %s  ' " ' " ' 입니다.
* SELECT 명령으로 컬럼 3개의 값을 DB테이블로 부터 추출한 다음 WHERE 절 이후 조건에 의한 UPDATE문을 만드는 쿼리입니다.


2010/08/18 10:27 2010/08/18 10:27








마음튼튼 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다