当使用 psql
命令行工具创建数据库时,我通常会做的事情(因为我以前见过它可以工作,但我真的不知道任何其他做事的方式)是为了:
- 首先创建一个新用户
U
(CREATE USER U WITH PASSWORD 'U'
); - 然后创建一个名为
U
的数据库(CREATE DATABASE U
); - 退出
psql
并使用psql -U U
重新启动它 - 开始创建表(
CREATE TABLE T()
)。
这带来的问题是它不能很好地与 SQL 脚本一起工作。我宁愿只有一个 .sql 文件,可以在其中创建完整的数据库。这可能吗?
谢谢
最佳答案
使用这样的 bash 脚本:
#!/bin/bash
psqluser="U" # username
psqlpass="U" # password
psqldb="U" # db
sudo printf "CREATE USER $psqluser WITH PASSWORD '$psqlpass';\nCREATE DATABASE $psqldb WITH OWNER $psqluser;\nGRANT ALL PRIVILEGES ON database $psqldb TO $psqluser;" > createdb.sql
sudo -u postgres psql -f createdb.sql
echo "Populating inserting.sql"
sudo -u postgres psql -d $psqldb -f inserting.sql
其中 inserting.sql 是这样的:
CREATE TABLE T (
id serial,
description text
);
ALTER TABLE T OWNER TO U;
INSERT INTO T(description) VALUES ('description 1');
INSERT INTO T(description) VALUES ('description 2');
ALTER TABLE ONLY T ADD CONSTRAINT id_pkey PRIMARY KEY (id);
关于sql - 是否可以创建一个 sql 脚本来创建数据库并用表填充它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123281/