Как сделать db_dump с правильной кодировкой - PullRequest
2 голосов
/ 24 февраля 2012

Я делаю скрипт, который может загрузить db_dump из удаленной базы данных postgres.

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

в удаленной базе данных есть LATIN1, и когда я выполняю сценарий, который я записал, это UTF-8

, обратите внимание, что я хочу сохранить кодировку удаленной базы данных так,если удаленная база данных - UTF-8, я хочу, чтобы локальная тоже была utf-8

знает ли кто-нибудь, как это сделать ??

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

В базе данных PostgreSQL есть кодировка, но есть и связь с базой данных / сеансом.Сервер выполнит необходимое преобразование данных на лету.

Команда pg_dump уже использует правильную кодировку - по умолчанию это исходная база данных, но вы можете выбрать другую опцию -E.Если вы используете -C, то он добавит оператор CREATE с правильной кодировкой (текстовый формат).

Посмотрите на эти несколько строк файла SQL pg_dump (-E LATIN1 -C):

SET client_encoding = 'LATIN1';
...
CREATE DATABASE postgres WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'pl_PL.UTF-8' LC_CTYPE = 'pl_PL.UTF-8';

Все, что вам нужно сделать, это создать базу данных с нужной вам кодировкой или использовать опцию -C pg_dump, чтобы включить команду CREATE в файл дампа.PostgreSQL psql (или pg_restore) сделает все остальное.

0 голосов
/ 24 февраля 2012

Из документации pg_restore:

-C, --create             Zieldatenbank erzeugen

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...