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).