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-collaties retourneert. Dit is een bekend probleem in SQL Server en Azure SQL. Niet-UTF8-collatie is de standaardinstelling in Synapse SQL zodat klantquery's worden beïnvloed. Klanten die engelse standaardtekens en een subset uitgebreide Latijnse tekens gebruiken, merken de conversiefouten mogelijk niet. De onjuiste conversie wordt uitgebreid beschreven in UTF-8-collaties 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-collatie te gebruiken bij het lezen van UTF-8-tekst uit CSV- of PARQUET-bestanden.

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

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • U kunt expliciet de collatie 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-collatie hebt opgegeven voor externe tabellen die UTF8-gegevens lezen, moet u beïnvloede externe tabellen opnieuw maken en UTF8-collatie instellen voor VARCHAR-kolommen (metagegevensbewerking).

Volgende stappen