2011-11-24 4 views
0

약 6,000 개의 항목이있는 DB를 상속했습니다. 하나의 열은 varchar로 6 개 항목 집합을 나타냅니다. 항목의 일부는 다음과 같습니다 :varchar를 집합으로 변환

A 
ABC 
A,B,C,D,E,F 
ade 
ONONONONONONON 
onon?" or sleep(10)#onononon 

그것은 꽤 쓰레기 보이지만 내가 문자로 표현하는 사람들을 구제하지만 인젝션 공격의 결과 모양을 무시하려는 생각 해요.

내가하고 싶은 것은이 열을 SET 유형으로 표현하는 것입니다. 나는 (의사 코드)의 라인을 따라 생각하고있다.

UPDATE MYTABLE 
SET NEWCOLUMN = (NEWCOLUMN & 'A') 
WHERE (REGEX MATCHES OLDCOLUMN) 

그리고 6 가지 요소에 대해이 쿼리를 6 번 반복한다.

나는 다음 단계를 이해할 수 없다 ...이 업데이트 쿼리를 작성하여 작동하는 방법을 알아낼 수 없다. 시작하는 방법을 알 수 없다. mysql에 대한 정규식을 작성합니다.

답변

1

솔직히 최선의 방법은 PHP, Perl, Python 등의 스크립팅 언어를 통해 실행하는 것이 가장 좋습니다. 그런 식으로 새로운 기록을 만들 수 있습니다. 단일 SQL 쿼리는 작업을 수행하지 않습니다.

+0

젠체하는, 나는 여기에서 게으 르기를 바라고 있었다. 오 잘 ... – bdares

0

이 솔루션에는 sql이 포함되지 않지만 유용 할 수 있습니다. 등, 그것은 멋진 GUI를 가지고, 청소 업 이기종 데이터 세트를위한 무료 도구입니다, 구글 조정을 사용하여 시도하고 당신이 정규 표현식을 사용할 수 있습니다

+0

흥미로운 도구 인 것처럼 보이지만이 데이터를 Google 서버에 배치 할 수는 없습니다. – bdares

0

난 단지 신속하게 테스트하지만 어떻게 ALTER 표에 대한

ALTER TABLE mytable MODIFY mycolumn SET('AAA', 'BBB', 'CCC', 'A', 'C'); 

먼저 사본에서이 작업을 수행하고 경고가 없거나 데이터가 손실됩니다.

관련 문제