Felsöka läsning av UTF-8-text från CSV- eller Parquet-filer med hjälp av serverlös SQL-pool i Azure Synapse Analytics
Den här artikeln innehåller felsökningssteg för att läsa UTF-8-text från CSV- eller Parquet-filer med hjälp av serverlös SQL-pool i Azure Synapse Analytics.
När UTF-8-text läss från en CSV- eller PARQUET-fil med hjälp av serverlös SQL-pool konverteras vissa specialtecken som ü och ö felaktigt om frågan returnerar VARCHAR-kolumner med icke-UTF8-sortering. Det här är ett känt problem i SQL Server och Azure SQL. Icke-UTF8-sortering är standard i Synapse SQL så kundfrågor påverkas. Kunder som använder engelska standardtecken och vissa delmängder av utökade latinska tecken kanske inte märker konverteringsfelen. Den felaktiga konverteringen förklaras mer detaljerat i Använd alltid UTF-8-sortering för att läsa UTF-8-text i serverlös SQL-pool
Lösning
Lösningen på det här problemet är att alltid använda UTF-8-sortering vid läsning av UTF-8-text från CSV- eller PARQUET-filer.
I många fall behöver du bara ange UTF8-sortering för databasen (metadataåtgärd).
alter database MyDB COLLATE Latin1_General_100_BIN2_UTF8;
Du kan uttryckligen definiera sortering på VARCHAR-kolumnen i OPENROWSET eller extern tabell:
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
Om du inte angav UTF8-sortering för externa tabeller som läser UTF8-data måste du återskapa påverkade externa tabeller och ange UTF8-sortering för VARCHAR-kolumner (metadataåtgärd).