BigQuery SQL - исправление сломанных специальных символов - PullRequest
0 голосов
/ 16 апреля 2020

Наши таблицы были загружены неработающими специальными символами, и я пытаюсь найти способ исправить это с помощью стандартной функции SQL, temp JS или иным образом в веб-интерфейсе BigQuery.

Неисправный текст такой: Décor но должен быть такой: Dècor

Я уже пробовал некоторые решения, которые я нашел на SO, включая это , но ни одно из них не работает.

Есть ли способ исправить это с помощью стандартной SQL, функции temp JS или другого способа в веб-интерфейсе BigQuery?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Не уверен, что это ответит на ваш вопрос, но я бы сосредоточил свое внимание в другом месте. А именно, почему слово «Dècor» становится, если я правильно понял, при загрузке в вашу таблицу BigQuery «DÃ © cor».

Допустим, у вас есть файл CSV со следующим содержимым:

Dècor|Dècor|Dècor
Dècor|Dècor|Dècor

Если вы загрузите его в BigQuery с кодировкой «ISO-8859-1», он будет поврежден.

bq load --autodetect --source_format=CSV  -field_delimiter="|"  -encoding='ISO-8859-1' mydataset.test_french gs://my-bucket/broken_french.csv

А вот как выглядит таблица внутри BigQuery:

Row string_field_0  string_field_1  string_field_2  
1    Dècor          Dècor          Dècor
2    Dècor          Dècor          Dècor

С другой стороны, если вы используете кодировку 'UTF-8', например, так:

bq load --autodetect --source_format=CSV  -field_delimiter="|"  -encoding='UTF-8' mydataset.test_french2 gs://my-bucket/broken_french.csv

результат в BigQuery выглядит следующим образом:

Row string_field_0  string_field_1  string_field_2  
1    Dècor            Dècor           Dècor
2    Dècor            Dècor           Dècor

Итак, в случае там, где вы используете неправильную кодировку для загрузки ваших данных, я бы перезагружал их, используя правильную.

0 голосов
/ 16 апреля 2020

Если у вас мало столбцов, вы можете просто использовать REPLACE(brokencolumn, 'é', 'è').

Вы можете использовать его, если у вас много столбцов, но может быть лучше найти автомат метод это делает:)

...