Как изменить кодировку базы данных для базы данных PostgreSQL с помощью sql или phpPgAdmin?

Как я могу изменить кодировку базы данных для базы данных PostgreSQL, используя sql или phpPgAdmin?

Ответы на вопрос(3)

update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'database_name'
 Bobort20 авг. 2015 г., 20:14
Теперь это полезный ответ. «Создать базу данных с новой кодировкой» - это невероятно бесполезная инструкция, когда сам вопрос «Как изменить кодировку в базе данных?»
 Abhipso Ghosh24 июн. 2017 г., 11:24
Это дает мне эту ошибку:-bash: syntax error near unexpected token ( ' `
 rombarcz13 дек. 2015 г., 19:27
Задокументировано ли это где-нибудь в руководстве postgres? игра с внутренностями postgresql и просто обновление справочной информации может привести к серьезным убыткам. Если это действительно переписать все индексы и необходимые данные, это здорово! Но если нет, вы можете в конечном итоге восстановить из резервных копий.
 Victor24 нояб. 2016 г., 16:53
@ Боборт, вы правы ... но есть некоторые предостережения по изменению "на лету"stackoverflow.com/a/5091083/903998.. похоже, что правильный выбор - начать с новой базы данных (postgres)

вы можете использовать эти команды для выполнения своей задачи.

// Backup the database to outfile
pg_dump dbname > outfile

// Terminate all connections to the database
psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='dbname';"

// Delete the database
psql -c "DROP DATABASE dbname;"

//Re-create the database using the encoding keyword
psql -c "CREATE DATABASE dbname ENCODING='UTF8';"

//Import the saved data
psql -f outfile

Демпинг базы данных:http://www.postgresql.org/docs/9.4/static/backup-dump.html

Создание базы данных:http://www.postgresql.org/docs/9.4/static/sql-createdatabase.html

Это список всех кодировок, доступных для версии 9.4:http://www.postgresql.org/docs/9.4/static/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED

Решение Вопроса

вы не можете сделать это только с phpPgAdmin или SQL без рискасуществующее повреждение данных, Вы должны экспортировать все данные, создать базу данных с правильной кодировкой и восстановить экспортированные данные.

Вот как вы должны действовать:

создать дамп базы данных:

pg_dump your_database > your_database.sql

это сохранит вашу базу данных в формате sql в той кодировке, которая у вас есть.

удалить базу данных (или переименуйте его):

DROP DATABASE your_database

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

ALTER DATABASE your_database RENAME TO your_database_backup;

создать базу данных с новой кодировкой:

CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;

импортировать данные из созданного ранее дампа:

PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

вам нужно установить кодировку клиента psql на ту, которая была у вас в старой базе данных.

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

Можно просто изменить внутреннюю информацию postgres о базе данных, и любые новые данные после этого изменения будут сохранены правильно, однако ваши существующие данныеможет быть поврежден.

 Gediminas10 мая 2013 г., 11:17
Но если данных еще нет?
 Sash19 июл. 2012 г., 12:28
Нашел эту ссылку для PostgresSQLarchives.postgresql.org/pgsql-novice/2006-03/msg00210.php
 rombarcz19 дек. 2008 г., 14:35
drop = delete, вот ссылка на cpanel docs:cpanel.net/support/docs/11/cpanel/databases_delete_post.html
 Svish15 февр. 2011 г., 13:24
PostgreSQL новичок здесь ... Как вы можете сделать это, используя SQL и / или инструмент командной строки psql? Например, если база данных и сервер в настоящее время настроены на SQL_ASCII, но я хочу, чтобы это был UTF-8?
 rombarcz17 февр. 2011 г., 21:42
новичок или нет, вы должны знать свои инструменты, использовать pg_dump для дампа базы данных, psql -f для импорта ранее выгруженных данных. удалить / создать базу данных, вы можете использовать множество различных инструментов, SQL (DROP DATABASE / CREATE DATABASE [postgresql.org/docs/9.0/static/sql-createdatabase.html]), phpPgAdmin, pgAdmin (визуальные инструменты). ПРОЧИТАЙТЕ документацию инструмента перед выполнением каких-либо действий.
 daniels19 дек. 2008 г., 14:24
У меня есть учетная запись cpanel, и если я сделаю резервную копию базы данных, я смогу восстановить только содержимое, а не воссоздать базу данных с новой кодировкой

Ваш ответ на вопрос