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).