我该如何使用SQL或phpPgAdmin更改PostgreSQL数据库的编码?
我该如何使用SQL或phpPgAdmin更改PostgreSQL数据库的编码?
pg_dump your_database > your_database.sql
这将以当前编码格式将数据库保存为sql格式文件。DROP DATABASE your_database
如果您有足够的存储空间,我建议在确认新数据库一切正常之前保留旧数据库,并将其重命名:ALTER DATABASE your_database RENAME TO your_database_backup;
3. 使用新编码创建数据库:CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;
4. 从先前创建的转储中导入数据:PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
您需要将psql客户端编码设置为您在旧数据库中使用的编码。您可以在不进行导出/恢复的情况下实时更改编码:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'database_name'
-bash: syntax error near unexpected token
('`。 - Abhipso Ghosh进一步说明已有的答案,您可以使用以下命令完成您的任务。
// 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