1 년 전 데이터를 MySQL로 마이그레이션했습니다. 인코딩 불일치로 인해 이상한 문자 (Ã, ª, € 등)가 레코드에 삽입되었습니다. 우리는 전체 데이터베이스에서 이러한 모든 문자를 추적하려고합니다.mysql에서 이상한 문자 찾기
다음 쿼리를 시도했습니다.
select * from <table_name> where <field_name> regexp '[^a-zA-Z0-9&,$\'"() .-]'
그것은 나에게 떨어져 AZ, AZ, 0-9, &, 쉼표, 달러, 단일 인용, 큰 따옴표, 괄호, 공간, 시대의 모든 문자가있는 모든 항목을 제공합니다 , 특정 테이블의 <field_name>
에있는 하이픈
그러나 약 20 개의 필드가있는 약 93 개의 테이블이 있으므로 모든 이상한 문자를 찾는 데는 많은 시간이 걸립니다.
더 나은 방법으로 문제를 해결할 수 있습니까?
적절한 인코딩 설정으로 다시 다시 다시 가져 오는 것은 데이터가 그 이후로 많이 변경 되었기 때문에 옵션이 아닙니다.
인코딩 불일치를 확인하고 수정 했습니까? 그렇다면 추적을 유지하는 것보다는 오류를 하나씩 수정하는 것이 가장 좋습니다. – cmbuckley
우리는 인코딩 불일치가 무엇인지 압니다. 하지만 너무 늦어서이를 수정하고 다시 마이그레이션하십시오. 질문에서 언급 한 것과 같은 쿼리를 사용하여 모든 문자를 찾는 데는 많은 시간이 필요할 것입니다. 더 나은 접근 방법이 있습니까? – Taran