Compartilhar via


Resolução de problemas: lendo textos UTF-8 de arquivos CSV ou Parquet com o pool de SQL sem servidor no Azure Synapse Analytics

Este artigo fornece etapas de resolução de problemas para a leitura de textos UTF-8 de arquivos CSV ou Parquet com o pool de SQL sem servidor no Azure Synapse Analytics.

Ao ler textos UTF-8 de um arquivo CSV ou Parquet com o pool de SQL sem servidor, alguns caracteres especiais, como ü e ö, serão convertidos de forma incorreta se a consulta retornar colunas VARCHAR com agrupamentos não UTF-8. Esse é um problema conhecido no SQL Server e no SQL do Azure. O agrupamento não UTF-8 é o padrão no SQL do Synapse, portanto, as consultas dos clientes serão afetadas. Os clientes que usam caracteres do inglês padrão e alguns subconjuntos de caracteres latinos estendidos podem não notar os erros de conversão. A conversão incorreta é explicada com mais detalhes em Sempre use agrupamentos UTF-8 para ler textos UTF-8 no pool de SQL sem servidor

Solução alternativa

A solução alternativa para esse problema é sempre usar o agrupamento UTF-8 ao ler textos UTF-8 de arquivos CSV ou Parquet.

  • Em muitos casos, você só precisa definir o agrupamento UTF-8 no banco de dados (operação de metadados).

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • Você pode definir o agrupamento explicitamente na coluna VARCHAR em OPENROWSET ou na 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 você não tiver especificado o agrupamento UTF-8 em tabelas externas que leem dados UTF-8, será preciso recriar as tabelas externas afetadas e definir o agrupamento UTF-8 em colunas VARCHAR (operação de metadados).

Próximas etapas