-
일정 기간 데이터 백업Full-Stack/Back-end 2008. 1. 28. 22:57
아래 질의를 하면 결과가 아래와 같이 나오는데요.
이 질의의 결과를 파일로 저장하고 싶습니다. 단, 오늘로 부터 1주일 전까지만의 데이터를 뽑고,
이를 오늘날짜의 파일 이름으로 백업 받고자 합니다. 예를 들어 오늘이 7월 20일이면, 7월 14일 부터, 7월 20일까지의 데이터를 뽑아서. call_0720.txt 라는 파일로 뽑고 싶습니다.
방법이 있는지요.
select PHONE, CALLING_NUMBER, START_TIME from CALLUSE WHERE PHONE IN ('311') and length(CALLING_NUMBER) <= 6;
+-------+----------------+---------------------+
| PHONE | CALLING_NUMBER | START_TIME |
+-------+----------------+---------------------+
| 311 | 311 | 2005-07-20 19:35:54 |
| 311 | 311 | 2005-07-20 19:32:48 |
| 311 | 311 | 2005-07-20 19:04:11 |
| 311 | 311 | 2005-07-20 12:19:10 |
| 311 | 311 | 2005-07-20 12:18:00 |
| 311 | 311 | 2005-07-20 12:09:12 |
| 311 | 311 | 2005-07-19 21:26:16 |
| 311 | 311 | 2005-07-19 21:10:00 |
| 311 | 311 | 2005-07-19 21:05:24 |
| 311 | 311 | 2005-07-19 21:01:26 |
| 311 | 311 | 2005-07-18 19:13:39 |
| 311 | 311 | 2005-07-18 19:13:57 |
| 311 | 311 | 2005-07-18 19:15:59 |
| 311 | 311 | 2005-07-18 19:23:33 |
| 311 | 311 | 2005-07-18 19:24:28 |
| 311 | 311 | 2005-07-18 19:24:29 |
| 311 | 311 | 2005-07-18 19:24:30 |
| 311 | 311 | 2005-07-18 19:24:38 |
| 311 | 311 | 2005-07-18 19:24:39 |
+-------+----------------+---------------------+
19 rows in set (0.00 sec)select PHONE, CALLING_NUMBER, START_TIME into outfile 'call_0720.txt' from CALLUSE WHERE PHONE IN ('311') and length(CALLING_NUMBER) <= 6 and START_TIME < date_sub(now(), interval 7 day);
일정기간에 대한 쿼리를 원하신다면..
DATE_SUB라는 날짜에 대한 빼기 연산을 하는 함수를 이용하시면 됩니다.
예를 들면 일주일이라면 7일..
현재날짜부터 7일 전의 날짜를 구해서 조건을 주는것입니다.코드: DATE_SUB( NOW() , INTERVAL 7 DAY)
DAY, MONTH, YEAR 등의 활용이 가능합니다.코드: SELECT
PHONE, CALLING_NUMBER, START_TIME
FROM
CALLUSE
WHERE
PHONE IN ('311')
AND length(CALLING_NUMBER) <= 6
AND START_TIME > DATE_SUB( NOW() , INTERVAL 7 DAY)
;
이런식으로 쿼리를 하시면 될것 같습니다.
그리고 그 쿼리 결과를 파일에 저장하시고 싶다면..
-e 옵션을 활용하여 직접 쿼리를 수행하고 파일로 리다이렉트 하시면 될듯합니다.
그리고 -t 옵션을 넣어주시면.. 테이블 모양 도 같이 출력됩니다.코드: $ mysql -u 유저명 DB명 -p -e "쿼리" -t > 저장할 파일명
mysql -u ering DBERING -p.digital -e "SELECT PHONE, CALLING_NUMBER, START_TIME FROM CALLUSE WHERE PHONE IN ('311') AND LENGTH(CALLING_NU
MBER) <= 6 AND START_TIME > DATE_SUB(NOW(), INTERVAL 5 DAY)" -t > 20050708.txt
특정 테이블만을 저장함.
mysqldump -u 유저 -p 비번 dbname tablename -t > test.sql
CALLUSE_BK 테이블의 내용을 CALLUSE 테이블에 넣는다.
INSERT INTO CALLUSE(PHONE, CALLING_NUMBER, START_TIME, END_TIME, TEL_TIME, IN_OUT, CALL_TYPE)
SELECT PHONE, CALLING_NUMBER, START_TIME, END_TIME, TEL_TIME, IN_OUT, CALL_TYPE FROM CALLUSE_BK WHERE START_TIME > '2006-05-01 00:00:00';댓글