Partilhar via


Resolver problemas de leitura de texto UTF-8 a partir de ficheiros CSV ou Parquet com o conjunto de SQL sem servidor no Azure Synapse Analytics

Este artigo fornece passos de resolução de problemas para ler texto UTF-8 a partir de ficheiros CSV ou Parquet com o conjunto de SQL sem servidor no Azure Synapse Analytics.

Quando o texto UTF-8 é lido a partir de um ficheiro CSV ou PARQUET com o conjunto de SQL sem servidor, alguns carateres especiais como ü e ö são convertidos incorretamente se a consulta devolver colunas VARCHAR com agrupamentos não UTF8. Este é um problema conhecido em SQL Server e SQL do Azure. O agrupamento não UTF8 é a predefinição no SQL do Synapse para que as consultas dos clientes sejam afetadas. Os clientes que utilizam carateres em inglês padrão e alguns subconjunto de carateres latinos expandidos podem não notar os erros de conversão. A conversão incorreta é explicada mais detalhadamente em Utilizar sempre agrupamentos UTF-8 para ler texto UTF-8 no conjunto de SQL sem servidor

Solução

A solução para este problema é utilizar sempre o agrupamento UTF-8 ao ler texto UTF-8 a partir de ficheiros CSV ou PARQUET.

  • Em muitos casos, só precisa de definir o agrupamento UTF8 na base de dados (operação de metadados).

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • Pode definir explicitamente o agrupamento na coluna VARCHAR em OPENROWSET ou tabela externa:

    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
    
  • Se não especificou o agrupamento UTF8 em tabelas externas que leem dados UTF8, terá de recriar tabelas externas afetadas e definir o agrupamento UTF8 em colunas VARCHAR (operação de metadados).

Passos seguintes