Řešení potíží se čtením textu UTF-8 ze souborů CSV nebo Parquet pomocí bezserverového fondu SQL v Azure Synapse Analytics
Tento článek obsahuje postup řešení potíží pro čtení textu UTF-8 ze souborů CSV nebo Parquet pomocí bezserverového fondu SQL v Azure Synapse Analytics.
Při čtení textu UTF-8 ze souboru CSV nebo PARQUET pomocí bezserverového fondu SQL jsou některé speciální znaky jako ü a ö nesprávně převedeny, pokud dotaz vrátí sloupce VARCHAR s kolacemi, které nejsou UTF8. Jedná se o známý problém v SQL Server a Azure SQL. Kolace bez UTF8 je v Synapse SQL výchozí, takže to ovlivní dotazy zákazníků. Zákazníci, kteří používají standardní anglické znaky a podmnožinu znaků rozšířené latinky, si nemusí všimnout chyb převodu. Nesprávný převod je podrobněji vysvětlen v tématu Vždy používat kolace UTF-8 ke čtení textu UTF-8 v bezserverovém fondu SQL.
Alternativní řešení
Alternativním řešením tohoto problému je vždy používat kolaci UTF-8 při čtení textu UTF-8 ze souborů CSV nebo PARQUET.
V mnoha případech stačí nastavit kolaci UTF8 v databázi (operace metadat).
alter database MyDB COLLATE Latin1_General_100_BIN2_UTF8;
Můžete explicitně definovat kolaci pro sloupec VARCHAR v OPENROWSET nebo externí tabulce:
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
Pokud jste u externích tabulek, které čtou data UTF8, nezadali kolaci UTF8, musíte znovu vytvořit ovlivněné externí tabulky a nastavit kolaci UTF8 u sloupců VARCHAR (operace metadat).