Поделиться через


Устранение неполадок при чтении текста UTF-8 из файлов CSV или Parquet с помощью бессерверного пула SQL в Azure Synapse Analytics

В этой статье приведены шаги по устранению неполадок при чтении текста UTF-8 из файлов CSV или Parquet с помощью бессерверного пула SQL в Azure Synapse Analytics

При чтении текста UTF-8 из файла CSV или PARQUET с помощью бессерверного пула SQL некоторые специальные символы, такие как "ü" и "ö", преобразуются неправильно, если запрос возвращает столбцы VARCHAR с параметрами сортировки, отличными от UTF8. Это известная проблема в SQL Server и Azure SQL. Параметры сортировки, отличные от UTF8, используются по умолчанию в Synapse SQL, поэтому запросы клиентов будут затронуты. Клиенты, использующие стандартные английские символы и некоторые подмножества расширенных латинских символов, могут не заметить ошибки преобразования. Неверное преобразование более подробно описано в статье Всегда использовать параметры сортировки UTF-8 для чтения текста UTF-8 в бессерверном пуле SQL.

Обходной путь

Чтобы решить эту проблему, всегда используйте параметры сортировки UTF-8 при чтении текста UTF-8 из файлов CSV или PARQUET.

  • Во многих случаях необходимо просто задать параметры сортировки UTF8 в базе данных (операция с метаданными).

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • Можно явно определить параметры сортировки для столбца VARCHAR в OPENROWSET или внешней таблице:

    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
    
  • Если параметры сортировки UTF8 не заданы для внешних таблиц, считывающих данные UTF8, необходимо повторно создать затронутые внешние таблицы и задать параметры сортировки UTF8 для столбцов VARCHAR (операция с метаданными).

Дальнейшие действия