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