TIP게시판

제목 모든 테이블, 특정 키워드로 치환 소스 (INFORMATION_SCHEMA)
글쓴이 꾸숑 작성시각 2014/05/16 13:56:55
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 11977   RSS
거래처의 사업자 상호가 바뀌는 바람에 작업하게 되었습니다.
여러 모로 유용하게 사용될 것 같습니다.
솔찍히 제 소스는 아니고 저희 회사 원팀장님의 소스인데 어디든 올려도 된다고 하시네요^^
조금이라도 도움 되길 바라고...
MySQL의 세계는 깊고 넓은걸 느끼네요!

<?php

// 모든 테이블, 특정 키워드 치환

set_time_limit(0);
error_reporting(E_ALL);
header('Content-Type: text/html; charset=utf-8');

echo '<xmp style="font-family:GulimChe;font-size:12px;line-height:100%;">';

$db_host = 'localhost';
$db_name = '*****';
$db_user = '*****';
$db_pass = '*********';

$source = '서연';
$target = '서현';

$conn = mysql_connect($db_host,$db_user,$db_pass) or exit('fail db connect');

mysql_select_db($db_name) or exit('fail db select');

$query = <<<_QUERY_
SELECT concat('UPDATE ',TABLE_NAME,' SET `',COLUMN_NAME,'`=REPLACE(`',COLUMN_NAME,'`,''{$source}'',''{$target}'')') AS query
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='{$db_name}'
_QUERY_;

$result = mysql_query($query) or exit('fail query - '.mysql_error());

while ( $row = mysql_fetch_assoc($result) )
{
// mysql_query($row['query']) or exit('fail query - '.mysql_error());
 echo $row['query'].";\n";
}

mysql_close();
 다음글 Jquery value2 값 (2)
 이전글 Update문 처리 결과로 affected_rows()... (1)

댓글

한대승(불의회상) / 2014/05/16 15:26:12 / 추천 0
information_schema 테이블을 이용한 깔끔한 소스네요.

CI helper로 만들어도 좋을듯 싶습니다.
꾸숑 / 2014/05/16 16:56:04 / 추천 0
넵 상황봐서 그렇게 만들어서 올려 볼게요...!
물론 제가 만드는게 아니라 울 회사 개발팀장님 시켜서 ㅎㅎㅎㅎ
들국화 / 2014/05/16 17:57:05 / 추천 0
테클은 아니고요... 상호명이 왜 컬럼이름으로 들어가는지 의문이 드네요.
DDL문은 운영중에는 위험할수가 있어서....

자주 자동으로 쓸게 아니면 그냥 MySQL Client로 Query를 바로 처리하는게 더 좋을것 같네요.
concat할 필요도 없고...아무래도 php랑 묶이면(복잡해지면) 에러날 가능성도 늘어나고요...
한대승(불의회상) / 2014/05/16 18:00:32 / 추천 0
들국화// 컬럼명에 상호를 넣은게 아니고 모든 테이블 컬럼에 들어 있는 데이타의 상호를 바꾸던데요.
들국화 / 2014/05/16 18:01:55 / 추천 0
한대승// 앗~ 그래요? ㅋㅋㅋ 쿼리를 잘못 읽었나 보네요...
들국화 / 2014/05/16 18:10:11 / 추천 0
REPLACE였네요... RENAME하고 착각했다는.. 하긴 DDL문은 update가 아닌데... 아... 숙취로 머리가 .. ㅡㅡ;