Импорт и преобразование Sql Server Latin1 в Postgres UTF8 - PullRequest
0 голосов
/ 18 марта 2020

У меня есть несколько латинских кодированных SQL серверных таблиц, которые считываются в базу данных Postgres 10.10 UTF8 через сторонние таблицы.

Проблема возникает из-за пары полей 'free entry', которые накопились мусорные символы, которые не переводятся в UTF8 и вызывают сбой запросов в базе данных PG. Использование replace () работало какое-то время, но естественно новые продолжают появляться.

Становится проблематично отслеживать их и добавлять больше «замен». Есть ли какой-либо способ в Postgres массово преобразовать эти строки, когда они заносятся во внешнюю таблицу?

4 попытки на данный момент таковы:

1) «convert_from» казалось очевидным, но я смог заставить это работать только с определенными строками, а не со значениями полей. Можно ли заставить эту работу работать со случайными значениями полей?

2) Изменение кодировки клиента не помогло. Применимо ли это к этому?

3) Я также пытался создать преобразование согласно https://www.postgresql.org/docs/10/sql-createconversion.html, но я не знаю, как написать правильную функцию. Он определяет длину строки источника. Если нет заданной длины c, будет ли это вообще работать?

4) Возможно, встроенные преобразования https://www.postgresql.org/docs/10/functions-string.html#CONVERSION -NAMES - это ответ? Но я не мог найти примеры того, как их использовать. Я не реальная база данных, поэтому примеры очень важны.

Спасибо

...