Solución de problemas de lectura de texto UTF-8 desde archivos .csv o archivos Parquet con un grupo de SQL sin servidor en Azure Synapse Analytics
En este artículo se proporcionan pasos para la solución de problemas de lectura de texto UTF-8 desde archivos .csv o archivos Parquet con un grupo de SQL sin servidor en Azure Synapse Analytics.
Cuando se lee texto UTF-8 desde un archivo .csv o Parquet con el grupo de SQL sin servidor, algunos caracteres especiales, como ü y ö, se convierten incorrectamente si la consulta devuelve columnas varchar con intercalaciones que no son de UTF-8. Se trata de un problema conocido en SQL Server y Azure SQL. La intercalación que no es de UTF-8 es el valor predeterminado en Synapse SQL, por lo que las consultas de clientes se verán afectadas. Es posible que los clientes que usan caracteres estándar en inglés y algún subconjunto de caracteres latinos extendidos no perciban los errores de conversión. La conversión incorrecta se explica con más detalle en Usar siempre intercalaciones de UTF-8 para leer texto UTF-8 en un grupo de SQL sin servidor.
Solución alternativa
La solución a este problema es usar siempre la intercalación UTF-8 al leer texto UTF-8 desde archivos CSV o Parquet.
En muchos casos, solo tiene que establecer la intercalación de UTF-8 en la base de datos (operación de metadatos).
alter database MyDB COLLATE Latin1_General_100_BIN2_UTF8;
Puede definir explícitamente la intercalación en la columna VARCHAR de OPENROWSET o en una tabla 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
Si no especificó la intercalación de UTF-8 en las tablas externas que leen datos de UTF-8, debe volver a crear las tablas externas afectadas y establecer la intercalación de UTF-8 en las columnas varchar (operación de metadatos).