2011-04-22 4 views
2

매주 몇 개의 매우 큰 MySQL 테이블에서 데이터를 완전히 대체해야합니다. 그래서 내가 일반적으로하는 일은 기존 데이터를 지우고 새 데이터를 가져온 다음 일반적인 쿼리를 실행하여 필요에 따라 새 데이터를 수정하는 것입니다.MySQL 테이블 : 모든 필드에서 특정 문자를 제거하려면 어떻게해야합니까?

요즘 불행히도 요즘에는 새로운 데이터에 따옴표와 여분의 공백과 같은 원치 않는 문자가 포함되어 있음을 발견했습니다. 이 테이블 (AFAIK)의 일부에 100,000 개가 넘는 레코드가 있으므로 가져 오기 전에 원하지 않는 문자를 제거하기 위해 메모장에서 데이터를 쉽게 열 수 없습니다.

은 내가 별도의 발견을 작성하고 다음과 같이, 모든 테이블에서 모든 단일 열에 대한 쿼리를 대체 할 수 실현 :

UPDATE mytablename SET mycolumn = REPLACE(mycolumn, '"', ''); 

그러나 모든 열 이름을 가진이 귀찮게입니다. 어쨌든, 나는 더 우아한 해결책을 찾고 싶습니다. 오늘은 시작처럼 보이는 인터넷에서 조각을 발견 :

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE 
     table_name = 'myTable' and ordinal_position = 1 

내가 다음 단계는 교체하고 각 열을 업데이트 한 다음 서수 위치를 통해 루프, 그리고 것 같아요,하지만 나도 몰라 어떻게 MySQL에서 이것을 할 수 있습니다. 또한 오류 메시지를 피하기 위해 마지막 열에 도달 한 후 루프를 중지하는 방법을 알지 못합니다.

쉬운 방법이 있나요? 또는 나는 너무 많이 바라고 있습니까?

나는 초급자이므로 명확하고 간단한 설명을 많이 부탁드립니다.

미리 감사드립니다.

추가 정보 : 내 첫 번째 게시물부터

  1. , 내가 저장 프로 시저 내 서버에 허용되지 않는 것을 발견했다. 너무 나빴어.
  2. 어쨌든, 난 그냥 시작하는이 새로운 코드를 시도 :

설정 @의 mytablestring = 'MYTABLE';

세트 @ mycolumnnumber = 1;

set @ mycolumnname = (SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS where table_name = @mytablestring 및 ordinal_position = @mycolumnnumber);

SELECT @mycolumnname FROM mytable;

최종 SELECT 쿼리에서 @mycolumnname은 열 이름이 아닌 문자열로 해석됩니다. 그래서 쿼리가 작동하지 않습니다. 만약 내가 이것을 지나칠 수 있다면, 나는 @mycolumnnumber를 증가시킴으로써 열을 반복하는 코드를 작성할 수있을 것이라고 믿는다.

누구든지이 문제를 해결하는 방법을 알고 있다면 정말 도움이 될 것입니다.

감사합니다.

+0

:

sed 's/#//g' foobar.txt > foobar-clean.txt 

을 또는 파일과 같은 일이 (g) 정력에 오픈 :

예를 들어, foobar.txt에서 모든 # 문자를 제거합니다 스크립트를 어셈블하거나 데이터를 정리하는 SQL 문의 프로 시저를 작성하면됩니까? – Thomas

+0

예, 아주 좋은 이유가 있습니다. 어떻게 해야할지 모르겠습니다. 물론 개별 열을 업데이트하기 위해 100 개 이상의 개별 쿼리를 작성할 수 있지만 단일 쿼리로 전체 테이블을 검색 할 수있는 더 나은 솔루션이 필요하다고 생각합니다. 여러 포럼에서이 질문을하는 게시물이 많이 있지만, 텍스트 편집기를 사용하지 않고도 간단하게 대답하는 것을 본 적이 없으며 각 열에 대해 별도의 쿼리를 작성할 필요도 없습니다. 그래서 MySQL이 이런 종류의 것을 처리 할 수있는 다재다능하고 강력한 지 여부를 알고 싶습니다. 감사. – Inquisitive

답변

0

vim, sed, awk 및 Linux에서 (그리고 때로는 Windows에서도) 찾을 수있는 많은 텍스트 편집기와 텍스트 처리 유틸리티를 살펴 보는 것이 좋습니다. 10 만 건의 레코드가 메모장에서 고통 스러울 지 모르지만 텍스트 처리 유틸리티 용 케이크 조각입니다.당신이 돈 '어떤 이유가

:%s/#//g 
+0

매우 재미 있고 도움이됩니다. 감사. 그러나 텍스트 편집기를 사용하려면 추가 단계가 필요하며이 과정을 간소화하고 싶습니다. 또한, MySQL이 이런 종류의 것을 처리 할 수 ​​있는지 궁금합니다. MySQL에서이 작업을 수행 할 수있는 방법이 있습니까? – Inquisitive

관련 문제