Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera kroki rozwiązywania problemów dotyczące odczytywania tekstu UTF-8 z plików CSV lub Parquet przy użyciu bezserwerowej puli SQL w usłudze Azure Synapse Analytics.
Gdy tekst UTF-8 jest odczytywany z pliku CSV lub PARQUET przy użyciu bezserwerowej puli SQL, niektóre znaki specjalne, takie jak ü
i ö
są niepoprawnie konwertowane, jeśli zapytanie zwraca varchar kolumn z sortowaniami innych niż UTF8. Jest to znany problem w programach SQL Server i Azure SQL. Sortowanie inne niż UTF8 jest domyślne w usłudze Synapse SQL, więc zapytania klientów zostaną tym dotknięte. Klienci, którzy używają standardowych znaków w języku angielskim i niektórych podzestawu rozszerzonych znaków łacińskich, mogą nie zauważyć błędów konwersji. Niepoprawna konwersja jest wyjaśniona bardziej szczegółowo w . Zawsze używaj sortowania UTF-8 do odczytywania tekstu UTF-8 w bezserwerowej puli SQL.
Rozwiązanie
Obejściem tego problemu jest zawsze użycie sortowania UTF-8 podczas odczytywania tekstu UTF-8 z plików CSV lub PARQUET.
W wielu przypadkach wystarczy ustawić sortowanie UTF8 w bazie danych (operacja metadanych).
alter database MyDB COLLATE Latin1_General_100_BIN2_UTF8;
Sortowanie można jawnie zdefiniować w kolumnie varchar w tabeli OPENROWSET lub tabeli zewnętrznej:
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
Jeśli nie określono sortowania UTF8 w tabelach zewnętrznych odczytujących dane UTF8, należy ponownie utworzyć dotknięte tabele zewnętrzne i ustawić sortowanie UTF8 dla kolumn typu varchar (operacja metadanych).