Problemen oplossen met het lezen van UTF-8-tekst uit CSV- of Parquet-bestanden met behulp van een serverloze SQL-pool in Azure Synapse Analytics

Dit artikel bevat stappen voor probleemoplossing voor het lezen van UTF-8-tekst uit CSV- of Parquet-bestanden met behulp van een serverloze SQL-pool in Azure Synapse Analytics.

Wanneer UTF-8-tekst wordt gelezen uit een CSV- of PARQUET-bestand met behulp van een serverloze SQL-pool, worden sommige speciale tekens zoals ü en ö onjuist geconverteerd als de query VARCHAR-kolommen met niet-UTF8-sorteringen retourneert. Dit is een bekend probleem in SQL Server en Azure SQL. Niet-UTF8-sortering is de standaardinstelling in Synapse SQL, zodat klantquery's worden beïnvloed. Klanten die standaard Engelse tekens en een subset van uitgebreide Latijnse tekens gebruiken, merken de conversiefouten mogelijk niet op. De onjuiste conversie wordt in meer detail uitgelegd in UTF-8-sorteringen altijd gebruiken om UTF-8-tekst in serverloze SQL-pool te lezen

Tijdelijke oplossing

De tijdelijke oplossing voor dit probleem is om altijd UTF-8-sortering te gebruiken bij het lezen van UTF-8-tekst uit CSV- of PARQUET-bestanden.

  • In veel gevallen hoeft u alleen de UTF8-sortering in te stellen voor de database (metagegevensbewerking).

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • U kunt de sortering expliciet definiëren voor de kolom VARCHAR in OPENROWSET of een externe tabel:

    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
    
  • Als u geen UTF8-sortering hebt opgegeven voor externe tabellen die UTF8-gegevens lezen, moet u de betrokken externe tabellen opnieuw maken en UTF8-sortering instellen voor VARCHAR-kolommen (metagegevensbewerking).

Volgende stappen