Вывод базы данных с определенной кодировкой и попытка восстановить ее в другой базе данных с другой кодировкой может привести к повреждению данных.Кодировка данных должна быть установлена ДО того, как какие-либо данные будут вставлены в базу данных.
Проверьте this : При копировании любой другой базы данных настройки кодирования и локали не могут быть изменены по сравнению с настройкамиисходная база данных, поскольку это может привести к повреждению данных.
И this : Некоторые категории языковых стандартов должны иметь свои значения фиксированными при создании базы данных.Вы можете использовать разные настройки для разных баз данных, но как только база данных будет создана, вы не сможете больше их изменять для этой базы данных. LC_COLLATE и LC_CTYPE - эти категории. Они влияют на порядок сортировки индексов, поэтому они должны оставаться фиксированными, иначе индексы в текстовых столбцах могут быть повреждены. ( Но вы можете уменьшить это ограничение, используя параметры сортировки, как обсуждалось в разделе 22.2. ) Значения по умолчанию для этих категорий определяются при запуске initdb, и эти значения используются при создании новых баз данных, если в команде CREATE DATABASE не указано иное.
Я бы предпочел перестроить все с самого начала, используя правильную локальную кодировку в вашей операционной системе Debian, как объяснено здесь :
su root
Переконфигурировать ваши локальные настройки:
dpkg-reconfigure locales
Выберите ваш язык (например, для французского в Швейцарии: fr_CH.UTF8)
Удалите и очистите должным образом postgresql:
apt-get --purge remove postgresql\*
rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres
Переустановите postgresql:
aptitude install postgresql-9.1 postgresql-contrib-9.1 postgresql-doc-9.1
Теперь любая новая база данных будет автоматически создаваться с правильной кодировкой, LC_TYPE (классификация символов) и LC_COLLATE (сортировка строк).заказ).