使用包含 [模板]、[编码]、[所有者] 的批处理文件和 .sql 文件创建 Postgres 数据库

发布于 2024-12-17 05:08:05 字数 568 浏览 1 评论 0原文

我想使用批处理文件创建 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;

I want to create a Postgres database using a batch file. Now the normal way of doing this is the following:

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

This script above creates a database with the default database parameters. However, I want to create a database with the following parameters, as follows:

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

Please tell me how to create a database with the above parameters using Batch files.

Also let me know how to use a .sql file to do the same, like this command-line:

"C:\Program Files\PostgreSQL\9.0\bin\createdb.exe" -U Myadmin -f C:\createDB.sql;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤千羽 2024-12-24 05:08:06

客户端程序 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 文件。更多信息请参见:

The client program createdb does not support all those options.
Create a file 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;

Call it:

psql -U postgres postgres -f C:/path/to/db_create.sql

The trick here is to connect to the default maintenance db "postgres" and create the new database from there. I do it with the default superuser named "postgres" in my example.
psql -f executes the SQL commands in the given file.

You could also just execute a single command with psql -c (no file involved):

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"

More on creating a database in the fine manual here and here.
More on psql.


On Windows, it looks something like this:

"C:\Program Files\PostgreSQL\verson_number\bin\psql.exe" -U user -f C:/path/to/db_create.sql postgres

The last "postgres" is the name of the default maintenance db.
If you want to use it in a batch file you have to answer a password prompt or connect with a user that is allowed access without providing a password. Basics in chapters The Password File and The pg_hba.conf File of the manual. More here:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文