Risolvere i problemi di lettura del testo UTF-8 da file CSV o Parquet usando un pool SQL serverless in Azure Synapse Analytics

Questo articolo illustra la procedura di risoluzione dei problemi per la lettura del testo UTF-8 da file CSV o Parquet usando un pool SQL serverless in Azure Synapse Analytics.

Quando il testo UTF-8 viene letto da un file CSV o PARQUET usando un pool SQL serverless, alcuni caratteri speciali come ü e ö vengono convertiti in modo errato se la query restituisce colonne VARCHAR con regole di confronto non UTF8. Si tratta di un problema noto in SQL Server e Azure SQL. Le regole di confronto non UTF8 sono l'impostazione predefinita in Synapse SQL, pertanto saranno interessate le query dei clienti. I clienti che usano caratteri in inglese standard e alcuni subset di caratteri latini estesi potrebbero non notare gli errori di conversione. La conversione non corretta è illustrata in modo più dettagliato in Usare sempre regole di confronto UTF-8 per leggere il testo UTF-8 nel pool SQL serverless

Soluzione alternativa

La soluzione alternativa a questo problema consiste nell'usare sempre le regole di confronto UTF-8 durante la lettura del testo UTF-8 da file CSV o PARQUET.

  • In molti casi, è sufficiente impostare le regole di confronto UTF8 nel database (operazione di metadati).

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • È possibile definire in modo esplicito le regole di confronto nella colonna VARCHAR in OPENROWSET o nella tabella esterna:

    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
    
  • Se non sono state specificate regole di confronto UTF8 in tabelle esterne che leggono dati UTF8, è necessario ricreare le tabelle esterne interessate e impostare le regole di confronto UTF8 sulle colonne VARCHAR (operazione di metadati).

Passaggi successivi