개발 Q&A

제목 오랫만입니다... mysql 질문요...
글쓴이 람이 작성시각 2015/09/08 14:06:58
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 11686   RSS
다들 식사들은 하셨습니까 ?

오랫만에 질문이 생겨 방문 하네요..

php 5.6 이구요.

mysql 5.5 입니다.

crontab을 통해 php를 실행하는데

여행사에서 제공하는 XML을 URL로 가져와서 파싱 이후 DB에 넣는것 까지는 잘 되었습니다.

고객이 요청한 사항중에

XML을 넣을떄 어제꺼와 오늘꺼를 테이블을 따로 생성하여 저장하고
만약 오늘꺼에 입력도중 문제가 발생하면 어제꺼를 오늘 사용하도록 해 달라고 합니다.

예를 들어 product_table 이 있다고 가정하면
일단 오늘 XML처리할떄 product_table_20150908로 생성하고 데이타를 저장한 다음 데이타 저장에 이상이 없다면
어제꺼를 product_table 에서 product_table_old로 이름을 변경한 다음
오늘 저장한 product_table_20150908 를 product_table로 이름이 바꿔 늘 새로운 데이타를 사용하도록 해 달라는 겁니다.

만약 중간에 다 들어가지 못한 경우는 그냥 어제꺼 table을 그대로 사용할 수 있게 되는거죠 ?

위 과정을 php에서 어떻게 하면 가능할까요 ?
테이블 복사 -> 새로운 XML 데이타 저장 -> 이상 없으면 어제꺼 이름 변경 + 오늘꺼 이름 변경 ->완료

식인겁니다.
 다음글 mysql 에서 두개 이상의 테이블을 하나로 합치려고 ... (9)
 이전글 왕초보가 웹페이지를 만들려고 합니다. (2)

댓글

한대승(불의회상) / 2015/09/08 14:19:08 / 추천 0
이상 없다 => 어제 데이터와 동일?
람이 / 2015/09/08 14:36:31 / 추천 0
한대승(불의회상) 님...
제가 그렇게 적었나요... 점심시간이라 졸려서 그런듯 ㅋㅋ

이상이 없다면 오늘날짜꺼를 사용한다는 거에요... ^^

어제는 OLD로 변경하구요...

이상 있으면 오늘꺼는 버리고 어제꺼를 다시 사용하게 되구요.
한대승(불의회상) / 2015/09/08 15:17:48 / 추천 0
이상 없다는게 XML 파싱하다가 에러가 났다는 뜻인가요?
람이 / 2015/09/08 15:43:09 / 추천 0
한대승(불의회상) 님..

네 그런 경우이거나... DB 인서트 하다 오류... (렉, 버퍼링 등) 모두 해당 합니다.

지금 해 보니
이름 바꾸는 거는
 mysql_query( "RENAME TABLE `wiz_prdprice_low_hanjin` TO `wiz_prdprice_low_hanjin_old` ");
 mysql_query( "RENAME TABLE `wiz_prdprice_low_hanjin_".date("Y-m-d")."` TO `wiz_prdprice_low_hanjin_new` ");

이런식으로 가능 하네요..

테이블 복사도
$r1 = mysql_query("CREATE TABLE `wiz_prd_group_hanjin_".date("Y-m-d")."` select * from `wiz_prd_group` ");
print("1 번 : ".$r1);


이런식으로 가능 하구요... ㅎㅎ

이게 맞는지는 모르겠지만...

근데 필드의 primary key 같은 속성은 복사가 안되나 보네요.
한대승(불의회상) / 2015/09/08 15:54:13 / 추천 0
"create table new_tbl like old_tbl" 하신후 "insert into new_tbl select * from old_tbl"  하면 키까지 모두 복사 가능 합니다.
람이 / 2015/09/08 15:56:16 / 추천 0
한대승(불의회상) 님...

아 그렇군요... 감사합니다. ^^
아주 잘 되네요 ^^