Azure Synapse Analytics에서 서버리스 SQL 풀을 사용하여 CSV 또는 Parquet 파일에서 UTF-8 텍스트 읽기 문제 해결
이 문서에서는 Azure Synapse Analytics에서 서버리스 SQL 풀을 사용하여 CSV 또는 Parquet 파일에서 UTF-8 텍스트를 읽기 위한 문제 해결 단계를 제공합니다.
서버리스 SQL 풀을 사용하여 CSV 또는 PARQUET 파일에서 UTF-8 텍스트를 읽는 경우 쿼리에서 UTF8 이외의 데이터 정렬이 있는 VARCHAR 열을 반환하는 경우 ü 및 ö와 같은 일부 특수 문자가 잘못 변환됩니다. 이는 SQL Server 및 Azure SQL의 알려진 문제입니다. UTF8이 아닌 데이터 정렬은 Synapse SQL의 기본값이므로 고객 쿼리에 영향을 줍니다. 표준 영어 문자와 일부 확장 라틴 문자 하위 집합을 사용하는 고객은 변환 오류를 알 수 없습니다. 잘못된 변환은 항상 UTF-8 데이터 정렬을 사용하여 서버리스 SQL 풀에서 UTF-8 텍스트를 읽는 데 자세히 설명되어 있습니다.
해결 방법
이 문제의 해결 방법은 CSV 또는 PARQUET 파일에서 UTF-8 텍스트를 읽을 때 항상 UTF-8 데이터 정렬을 사용하는 것입니다.
대부분의 경우, 데이터베이스에서 UTF8 데이터 정렬만 설정하면 됩니다(메타데이터 작업).
alter database MyDB COLLATE Latin1_General_100_BIN2_UTF8;
OPENROWSET 또는 외부 테이블의 VARCHAR 열에서 데이터 정렬을 명시적으로 정의할 수 있습니다.
select geo_id, cases = sum(cases) from openrowset( bulk 'latest/ecdc_cases.parquet', data_source = 'covid', format = 'parquet' ) with ( cases int, geo_id VARCHAR(6) COLLATE Latin1_General_100_BIN2_UTF8 ) as rows group by geo_id
UTF8 데이터를 읽는 외부 테이블에 UTF8 데이터 정렬을 지정하지 않은 경우 영향을 받은 외부 테이블을 다시 만들고 VARCHAR 열(메타데이터 작업)에서 UTF8 데이터 정렬을 설정해야 합니다.