使用批处理文件创建Postgres数据库,包括[模板]、[编码]、[所有者]以及一个.sql文件。

7

我想使用批处理文件创建一个Postgres数据库。通常的做法如下:

"C:\Program Files\PostgreSQL\9.0\bin\createdb.exe" -U Myadmin MydatAbseName

上述脚本将创建一个具有默认数据库参数的数据库。然而,我希望创建一个具有以下参数的数据库,具体如下:

   WITH OWNER = Myadmin 
   TEMPLATE = template0 
   ENCODING = 'SQL_ASCII'
   TABLESPACE = pg_default
   LC_COLLATE = 'C'
   LC_CTYPE = 'C'
   CONNECTION LIMIT = -1;

请告诉我如何使用批处理文件创建具有上述参数的数据库。
同时,请告诉我如何使用.sql文件执行相同操作,类似于以下命令行:
"C:\Program Files\PostgreSQL\9.0\bin\createdb.exe" -U Myadmin -f C:\createDB.sql;
1个回答

22

客户端程序createdb不支持所有这些选项。
创建一个文件db_create.sql

CREATE DATABASE MydatAbseName
   WITH OWNER myadmin 
   TEMPLATE template0
   ENCODING 'SQL_ASCII'
   TABLESPACE  pg_default
   LC_COLLATE  'C'
   LC_CTYPE  'C'
   CONNECTION LIMIT  -1;

调用它:

psql -U postgres postgres -f C:/path/to/db_create.sql
这里的诀窍是连接到名为“postgres”的默认维护数据库,然后从那里创建新数据库。在我的示例中,我使用名为“postgres”的默认超级用户进行操作。 psql -f 执行给定文件中的 SQL 命令。
您也可以只使用 psql -c(不涉及文件)执行单个命令:
psql -U postgres postgres -c "CREATE DATABASE MydatAbseName WITH OWNER Myadmin
EMPLATE template ENCODING 'SQL_ASCII' TABLESPACE  pg_default LC_COLLATE  'C'
LC_CTYPE  C' CONNECTION LIMIT  -1"

在这里了解更多关于创建数据库的信息,以及此处
进一步了解psql


在 Windows 上,它看起来像这样:

"C:\Program Files\PostgreSQL\verson_number\bin\psql.exe" -U user -f C:/path/to/db_create.sql postgres
最后面的"postgres"是默认维护数据库的名称。如果你想在批处理文件中使用它,你需要回答一个密码提示或连接一个允许不提供密码访问的用户。有关基础知识,请参阅手册中的章节密码文件pg_hba.conf文件。更多信息请参见以下链接:

我的.sql文件包含以下内容:
CREATE DATABASE MydatAbseName WITH OWNER nansis_Admin TEMPLATE template ENCODING 'SQL_ASCII' TABLESPACE pg_default LC_COLLATE 'C' LC_CTYPE 'C' CONNECTION LIMIT -1;__________________________________________--对于第二种方法, 没有创建任何数据库,请帮忙解决。虽然谢谢您的快速回复 :)
- PresleyDias
@PresleyDias:你的命令中有两个 psql。请尝试使用以下命令:"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" postgres -U nansis_admin -f 'C:\createDB.sql'。这只在用户 nansis_admin 拥有所需权限时才能正常工作。 - Erwin Brandstetter
@PresleyDias:我在我的回答中添加了一些内容。 - Erwin Brandstetter
仍然无法工作, 我的批处理文件内容。"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -U nansis_admin -f 'C:\createDB.sql' postgresnansis_admin 是超级用户。 - PresleyDias
批处理文件内容应为:"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -U nansis_admin -f C:\createDB.sql postgres而.sql文件的内容应为:CREATE DATABASE presley WITH OWNER nansis_Admin TEMPLATE template0 ENCODING 'SQL_ASCII' TABLESPACE pg_default LC_COLLATE 'C' LC_CTYPE 'C' CONNECTION LIMIT -1; - PresleyDias
显示剩余14条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接