所以我想在这里做的是在连接到我已经使用pgAdmin3的数据库时运行脚本。该脚本包含创建角色,表空间,数据库和创建模式以及该模式下的多个表。
这里的问题是,当我运行脚本时,它会正确地创建新角色,表空间和数据库。它还正确地创建了模式和表,但是出现问题时,模式是在数据库下创建的,我从中运行脚本而不是新创建的数据库。脚本或多或少都是这样的。
CREATE ROLE "new_role" ... ;
CREATE TABLESPACE "new_space"
OWNER "new_role"
LOCATION '/home/...';
CREATE DATABASE "new_db"
WITH OWNER = "new_role"
TABLESPACE = "new_space";
CREATE SCHEMA "schema" AUTHORIZATION "new_role" ;
CREATE TABLE IF NOT EXISTS "schema"."new_table"(
...
) TABLESPACE "new_space";...
...
我已经看到了一个\connect foo;
的解决方案,但这不是我想要的,我希望它能够以某种方式连接脚本,而无需单独运行并在终端中运行\connect foo
。
有人可以告诉我是否有这样做并帮我解决这个问题吗?
答案 0 :(得分:0)
使用psql并将其拆分为两个脚本。您可以将脚本保存在.sql
文件中,然后运行 psql 以连接到要在同一命令行上运行每个脚本的数据库(使用&&
in每个命令之间)。这两个 psql 命令可以组合成一个 bash 脚本,因此它只需要运行一个命令。
如果脚本名为foo.sql
:
psql -X -h <host> -U <user> -p <port> -f foo.sql <db_name>
第一个脚本可以有create role
,create tablespace
和create database
命令,连接到postgres
db或模板数据库,以及第二个脚本可以有其余的命令。
您还可以使用 bash 脚本中的createdb
代替CREATE DATABASE
。
答案 1 :(得分:0)
使用 pgAdminIV:
1- 右键单击默认数据库“postgres”
2- 选择创建数据库,命名为 f.e. “新数据库”
3- 点击“newdatabase”(建立连接)
4- 打开查询工具
5- 导入、编写或粘贴您的代码
6- 运行你的代码,例如:CREATE SCHEMA newschema;
它对我有用...