2013-05-23 2 views
0

프런트 엔드 소프트웨어에서 유효하지 않은 문자를 입력 할 수있는 데이터베이스를 사용하고 있습니다. (나는 소프트웨어를 제어하거나 다시 쓸 수 없습니다.)데이터베이스에서 잘못된 문자 찾기 또는 제거

문자 유형은 캐리지 리턴, 줄 바꿈, , ¶, 기본적으로 0-9, az 또는 표준 구두점이 아닌 모든 것이 우리에게 문제를 일으 킵니다. 데이터베이스 및 데이터 사용 방법에 대해 설명합니다.

전체 데이터베이스를 검사하여 이러한 잘못된 코드를 식별하고 결과로 표시하거나 제거하는 방법을 찾고 있습니까?

특정 범위를 검색하는 방법이 있다면 This site을 보았습니다. 그러나 나는 틀린 나무를 짖고 있을지도 모른다.

저는 SQL에 상당히 익숙해 져서 제게 친절하게 대해 주셔서 감사합니다.

+2

*** *** ***은 많은 데이터베이스 시스템에서 사용하는 언어이지만 구조적 쿼리 언어입니다. - 데이터베이스 제품이 아닌 ... 많은 것들이 공급 업체별입니다. 그래서 우리는 실제로 무엇이 * * 데이터베이스 시스템 ** (사용중인 버전) .... –

+0

Microsoft SQL 2008 R2 –

+0

SQL 버전이'정규 표현식 '을 지원하는 경우, 이러한 (인쇄 할 수없는) 문자에 대한 특수한'class'를 가질 수 있습니다. –

답변

0

내가 할 수있는 유일한 방법은 시스템 테이블을 사용하여 해당 데이터베이스/스키마의 모든 필드 목록을 가져 오는 저장 프로 시저를 작성하는 것입니다. 시스템 테이블을 제외하거나 (또는 ​​사용자 정의 된 테이블 만 포함) 시스템 테이블 조회에있는 열/테이블을 기반으로 SQL 갱신 명령문을 동적으로 작성하십시오. 정규 표현식 또는 문자 제거를 사용하여 문제의 this article

시스템 테이블에있는 것처럼 :

SELECT 
table_name,column_name 
FROM 
information_schema.columns 

Psudo 코드는 다음과 같습니다

Get list of tables we want to do this for 
For each table in list 
get list of columns for table that have string data. 
For each column in table 
generate update statement to strip unwanted characters 
--Consider writing out table, column key, before after values to history table. incase this 
has to be undone. 
--Consider counter so I have an idea of what was updated 
execute updatestatement 
next column 
next table 
write out counter 
0

당신이

데이터 말 때문에 이 문자를 처리 할 수없는 두 번째 프로그램으로 이동하면 실패하는 프로세스. 당신이이 읽을 수없는 데이터를두고 2 차 프로세스가 실패하는 경우에만/경우 채워 것 변경된 데이터에 대한 새 열을 만들 수 있다면

궁금하네요. 실패한 셀의 모든 데이터 특성을 테스트해야하지만 모든 행의 모든 ​​특성을 테스트 할 필요는 없습니다. 처리 할 업데이트 된 텍스트를 결정한 후 업데이트 된 값으로 두 번째 프로세스를 다시 호출 할 수 있습니다.