데이터를 스크럽해야합니다. 플랫 파일에서 일부 열의 SQL Server 테이블로 데이터를로드했습니다. -111, -11, -11과 같은 일부 값이 있습니다. 즉, 음수 값으로 시작하고 일부 빈 공간이 있습니다. 이러한 값을 모두 어떻게 대체 할 수 있습니까? 내 데이터베이스의 모든 테이블에 NULL이 있습니까?SQL Server에서 데이터 스크럽
답변
SQL Server 2012를 사용하는 경우 TRY_CONVERT
함수를 사용하여 캐스트 할 수있는 항목을 캐스팅하고 나머지는 NULL로 설정하십시오. 데이터를 정리하는 경우
TRY_CONVERT(DataType, FieldName)
, 당신이 잘못된 값을 찾기 위해 CHARINDEX
을 사용할 수 있습니다, 귀하의 예제에서 어디에 기준이 될 것, 또는 CASE 문은 CHARINDEX
을 사용 : 당으로
Fieldname = CASE WHEN CHARINDEX('-',Fieldname) > 0 THEN NULL ELSE Fieldname END
당신의 요청 : -의 모든 테이블의 모든 필드에서 NULL로 ''
DECLARE @Iterator varchar(55),@strSQL VARCHAR(8000)
DECLARE xyz CURSOR
FOR
--Select stuff to iterate over
SELECT DISTINCT t.name
FROM sys.columns c INNER JOIN
sys.tables t ON c.object_id = t.object_id INNER JOIN
sys.schemas s ON t.schema_id = s.schema_id
OPEN xyz
FETCH NEXT FROM xyz
INTO @Iterator
WHILE @@FETCH_STATUS = 0
BEGIN
--Do stuff
SET @strSQL = '
DECLARE @Iterator2 varchar(55), @strSQL2 varchar(8000)
DECLARE xyz2 CURSOR
FOR
--Select stuff to iterate over
SELECT DISTINCT c.name
FROM sys.columns c INNER JOIN
sys.tables t ON c.object_id = t.object_id INNER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE t.name = '''[email protected]+'''
OPEN xyz2
FETCH NEXT FROM xyz2
INTO @Iterator2
WHILE @@FETCH_STATUS = 0
BEGIN
--Do stuff
SET @strSQL2 = ''
UPDATE '[email protected]+'
SET ''[email protected]+'' = NULL
WHERE CHARINDEX(''''-'''',''[email protected]+'') <> 0
''
PRINT @strSQL2
FETCH NEXT FROM xyz2
INTO @Iterator2
END
CLOSE xyz2
DEALLOCATE xyz2
GO
'
PRINT (@strSQL)
FETCH NEXT FROM xyz
INTO @Iterator
END
CLOSE xyz
DEALLOCATE xyz
GO
이 코드는 말 그대로 모든을 업데이트 그대로 믿을 수 없을만큼 바보 활성 DB. 글쎄, 현재의 형태로는 스크립트를 작성하여 실행하고, 출력 한 코드를 실행하면 모든 업데이트 문을 갖게됩니다. '% tabletowreck %'와 같은 t.name 또는 '% badcolumn %'같은 곳의 c.name
두 가지 모두에 대해 기준을 추가 할 수 있습니다. 커서 'PRINT'이 코드는 실행하는 것이 안전합니다. 두 PRINT를 모두 EXEC로 변경하면 오류가 발생하지만 잠재적으로 매우 위험하다는 점에주의하십시오.
문자 그대로 "모든 테이블에서이 값을 모두 NULL로 바꾸려면"중첩 된 커서로 수행 할 수 있지만 매우 나쁜 생각 인 것 같습니다. 그것은 여러 테이블에 걸쳐 특정 필드를 누른 다음 그들을 지정할 수 있고 모든 테이블을 통해 루프를 단일 커서를 사용하여, 나는 두 버전을 가지고 싶다면 전화를 써주세요 ... –
답장을 보내 주셔서 감사합니다 당신은 코드를 게시하시기 바랍니다. 그래서 나는 그것을 시험 할 수있다. 실제로 어떤 것이 데이터베이스에 여러 개의 테이블 (약 50 개)이 있습니다. 데이터를로드하는 중에 음수 값이있는 경우 빈 공간이므로 전체 데이터베이스에서 null로 바꿔야합니다. –
- 1. JSON 데이터 유효성 검사/스크럽
- 2. SQL Server에서 Oracle으로 데이터 복사
- 3. SQL Server에서 JSON 데이터 처리
- 4. SQL Server에서 불필요한 데이터 제거
- 5. 업데이트시 SQL Server에서 데이터 내보내기
- 6. SQL Server에서 Excel로 데이터 내보내기
- 7. SQL Server에서 Oracle으로 데이터 마이그레이션
- 8. SQL Server에서 업데이트되는 데이터 확인
- 9. 여러 SQL Server에서 데이터 수집
- 10. SQL Server에서 NoSQL으로 데이터 이동
- 11. SQL Server에서 XML 데이터 형식에 데이터 추가
- 12. Linux에서 SQL Server에서 PostgreSQL으로 데이터 전송
- 13. SQL Server에서 데이터 형식을 변경하는 방법?
- 14. Microsoft SQL Server에서 데이터 가져 오기
- 15. Sql Server에서 데스크톱 응용 프로그램으로 데이터 푸시
- 16. SQL Server에서 Neo4J로 데이터 가져 오기
- 17. SSIS를 사용하여 SQL Server에서 Firebird로 데이터 전송
- 18. Spark SQL을 사용하여 SQL Server에서 데이터 읽기
- 19. LINQ를 사용하여 SQL Server에서 데이터 가져 오기
- 20. SQL Server에서 데이터베이스 연결 및 데이터 저장
- 21. SQL Server에서 열의 데이터 형식 변경
- 22. 트리거를 사용하여 SQL Server에서 MySql으로 데이터 삽입
- 23. Advantage Database Server에서 SQL Server로 데이터 전송
- 24. SQL Server에서 열의 데이터 정렬 제거
- 25. SQL Server에서 XML 데이터 (특성) 쿼리
- 26. 코드로 SQL Server에서 데이터 가져 오기/내보내기
- 27. SQL Server에서 Bit 데이터 형식을 PIVOT하려면 어떻게합니까?
- 28. SQL Server에서 이미지 열의 데이터 만들기
- 29. C#의 SQL Server에서 VARBINARY 데이터 스트리밍
- 30. SQL Server에서 SharePoint 2010으로 데이터 가져 오기
stackoverflow에 오신 것을 환영합니다. 질문에 대한 답변을 제공하기 위해 코드 스 니펫, 테이블 구조, 예제 입력/출력, 오류 메시지 및 특정 질문과 관련된 모든 정보를보고 싶습니다. –
SSIS를 사용하지 않는 이유는 무엇입니까? –
SSIS에 대해 잘 모르는 경우 왜 태그로 포함 했습니까? –