从命令行重命名postgresql数据库

时间:2013-08-12 12:25:52

标签: command-line rename postgresql-9.1 alter

我从bat文件中运行此命令:

start/wait/d "C:\Program Files\PostgreSQL\9.1\bin\" psql.exe --port 5432 --username postgres --dbname alter_db --file ./batch/rename_database.sql

我得到了这个日志错误:

  

CEST ERROR:

处或附近的语法错误      

“ALTER”at character 1 CEST STATEMENT:ALTER DATABASE postgres   重命名为postgres_old;

rename_database.sql具有以下内容:ALTER DATABASE postgres RENAME TO postgres_old;

2 个答案:

答案 0 :(得分:2)

我说你的文件./batch/rename_database.sql是使用unicode byte-order mark创建的。 psql不喜欢这个。删除BOM,然后重试。

我引用链接的文章:

  

BOM的UTF-8表示是字节序列0xEF,0xBB,0xBF。将文本解释为ISO-8859-1或CP1252的文本编辑器或Web浏览器将为此显示字符.

答案 1 :(得分:0)

步骤1->首先断开与必须重命名的数据库

的连接

步骤2->断开所有客户端与数据库的重命名

SELECT pg_terminate_backend(pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
    AND datname = 'db_name_to_be_renamed';

步骤3-&gt;然后重命名数据库

ALTER DATABASE "db_name_to_be_renamed" RENAME TO "new_db_name";