다음을 통해 공유


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 데이터 정렬을 설정해야 합니다.

다음 단계