질문/조언질답게시판

현재 가입폼에 기본으로 존재하는 이름 변수(db column : user_name)를 사용하지 않고 

확장변수(db column : extra_vars)에 이름변수(eid : member_eng_name)를 추가해서 사용하고 있습니다. 

 

이걸 기본이름 컬럼으로 모두 옮기고 싶어서 디비를 봐봤는데요,

현재 사용하는 이름변수에 입력되어 있는 데이터가 한글 영문으로 제각각입니다.

심지어 과거에 eid가 변경된 적이 있는지 해당 값은 비어있고 

대신에 과거 사용한것으로 보이는 eid에 (eng_name, en_name 등) 데이터가 있는 경우도 있습니다.

이 이름관련 값들을 user_name 컬럼으로 모두 옮기고 extra_vars에서는 제거해버리고 싶은데

디비 쿼리 짜는게 미숙해서 쉽지가 않은데 팁을 좀 주실수 있을까요?

 

더불어 디비의 extra_vars 컬럼에서 현재 사용하지 않고 남아있는 확장변수의 데이터는 모두 제거하고 싶습니다. 

이유는 홈페이지에 회원 확장 변수를 이용하는 기능이 많이 들어가있고,

추가해서 사용하는 확장변수가 많을뿐 아니라, 현재 사용하지않아 디비에만 남아있는 레거시도 너무 많은 상황입니다. 

확장변수 관련 기능들이 루프 돌면서 데이터를 일일히 비교하는 식이라 아무래도 퍼포먼스에 영향이 있을거라는 생각이 들어서

가능한 가입폼에 확장변수 수를 줄이고, 디비에서 남아있는 데이터들은 제거하고 싶은데 방법이 있을까요?

 

 

 

  • profile
    자답:
    정규표현식 사용해서 user_name로 데이터를 복사했습니다.
    update xe_member set user_name = substring_index( substring_index( REGEXP_SUBSTR(extra_vars, 'member_eng_name";s:[0-9]+:\\"[^0-9]+\\"'), ':"', -1), '"', 1);
  • profile
    추가:
    테스트 서버에서 정규표현식으로 테스트 완료하고, 호스팅서버에서 적용하려했으나 mysql 5.2버전에서 위 댓글의 정규식 지원을 하지 않아서 실패했습니다.
    php로 디비에서 일일히 읽어온뒤 업데이트하는 방법으로 완료했습니다.