Como eu posso mudar a codificação do banco de dados para um banco de dados PostgreSQL usando SQL ou phpPgAdmin?
Como eu posso mudar a codificação do banco de dados para um banco de dados PostgreSQL usando SQL ou phpPgAdmin?
Em suma, você não pode fazer isso com apenas phpPgAdmin ou SQL sem o risco de corrupção de dados existente . Você tem que exportar todos os dados, criar banco de dados com codificação correta e restaurar dados exportados.
Isto é como você deve proceder:
criar despejo de banco de dados :
pg_dump your_database > your_database.sqlisso vai salvar o seu banco de dados em formato sql, na codificação que têm actualmente.
excluir da base de dados (ou renomeá-lo):
DROP DATABASE your_databasese você tiver armazenamento suficiente para fazê-lo eu recomendo deixando antigo banco de dados até que você se certificar que tudo está OK com um novo, renomeie -lo:
ALTER DATABASE your_database RENAME TO your_database_backup;criar banco de dados com a nova codificação :
CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;importar dados de despejo criado antes :
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_databasevocê precisa definir codificação do cliente psql para que você tinha no banco de dados antigo.
Mudando a codificação on-the-fly não é possível, uma vez que exigiria reescrever a maioria dos dados do banco de dados interno, que é quase igual ao recriar db maneira que eu descrevi.
É possível apenas alterar postgres informações internas sobre banco de dados e quaisquer novos dados após essa alteração será salvo corretamente, no entanto os seus dados existentes pode ter corrompido .
Você pode alterar a codificação em tempo real, sem dump / restore:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'database_name'
Para ampliar as respostas dadas, você pode usar esses comandos para realizar sua tarefa.
// 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
Banco de dados de dumping: http://www.postgresql.org/docs/9.4/static/backup-dump.html
Banco de dados Criando: http://www.postgresql.org/docs/9.4/static/sql-createdatabase.html
Esta é uma lista de todas as codificações disponíveis para a versão 9.4: http://www.postgresql.org/docs/9.4/static/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED













