Postgres проблема с кодировкой сторонних данных

Я пытаюсь перенести данные Oracle с помощьюwe8mswin1252'кодирование в моей базе данных postgres, которая имеет "UTF8кодировка.

Я использую стороннюю упаковку данных.

я собираюсь

invalid byte sequence error

Что я должен делать?

1 ответ

Решение

Такие ошибки могут быть вызваны двумя причинами:

  • В ваших строках Oracle может быть ноль байтов. Это разрешено в Oracle (хотя это проблематично), но запрещено в PostgreSQL.

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

Есть два подхода к решению этой проблемы:

  • Правильный путь: исправить данные на стороне Oracle. oracle_fdw поддержит вас, сообщив, какая строка в наборе результатов вызвала ошибку.

  • Небрежный способ: использовать базу данных PostgreSQL с кодировкой базы данных sql_ascii, что позволит вам хранить что-либо в строке (кроме нулевых байтов).

Другие вопросы по тегам