PostgreSQL:在单个SQL脚本文件中创建数据库、表和填充数据
我正在尝试创建一个数据库,并在单个SQL脚本中添加创建表:PostgreSQL:在单个SQL脚本文件中创建数据库、表和填充数据,sql,database,postgresql,Sql,Database,Postgresql,我正在尝试创建一个数据库,并在单个SQL脚本中添加创建表: CREATE DATABASE w3; CREATE TABLE w3.public.examples ( id SERIAL PRIMARY KEY, text VARCHAR(200) NOT NULL ); INSERT INTO w3.public.examples (text) VALUES ('val1'); INSERT INTO w3.public.examples (tex
CREATE DATABASE w3;
CREATE TABLE w3.public.examples (
id SERIAL PRIMARY KEY,
text VARCHAR(200) NOT NULL
);
INSERT INTO
w3.public.examples (text)
VALUES
('val1');
INSERT INTO
w3.public.examples (text)
VALUES
('val2');
INSERT INTO
w3.public.examples (text)
VALUES
('val3');
SELECT
*
FROM
w3.public.examples;
当我通过psql执行此脚本时:psql-U postgres-a-f script.sql
psql:script.sql:26:错误:未实现跨数据库引用:“w3.public.examples”
第4行:w3.public.examples
这是否意味着我不能在一个SQL文件中创建和使用数据库?在
创建数据库w3之后代码>添加\c w3
然后删除w3。
参考:
CREATE DATABASE w3;
-- connect to the newly created database
\c w3
CREATE TABLE public.examples (
id SERIAL PRIMARY KEY,
text VARCHAR(200) NOT NULL
);
INSERT INTO
public.examples (text)
VALUES
('val1'), ('val2'), ('val3');
SELECT
*
FROM
public.examples;
日志:
谢谢不是这样的。顺便说一下,我之前尝试过\c,但收到语法错误。我猜这是因为我在语句后添加了分号,并认为它是\c语句错误,我不能在那里使用它。@VladMorzhanov它不是一个语句,而是psql
实用程序的“元命令”:。因此,它只在psql
中工作。我用IO更新了答案。
$ psql
psql (12.2 (Ubuntu 12.2-2.pgdg18.04+1), server 11.7 (Ubuntu 11.7-2.pgdg18.04+1))
Type "help" for help.
postgres=# CREATE DATABASE w3;
CREATE DATABASE
postgres=#
postgres=# -- connect to the newly created database
postgres=# \c w3
psql (12.2 (Ubuntu 12.2-2.pgdg18.04+1), server 11.7 (Ubuntu 11.7-2.pgdg18.04+1))
You are now connected to database "w3" as user "nd".
w3=#
w3=# CREATE TABLE public.examples (
w3(# id SERIAL PRIMARY KEY,
w3(# text VARCHAR(200) NOT NULL
w3(# );
CREATE TABLE
w3=#
w3=# INSERT INTO
w3-# public.examples (text)
w3-# VALUES
w3-# ('val1'), ('val2'), ('val3');
INSERT 0 3
w3=#
w3=# SELECT
w3-# *
w3-# FROM
w3-# public.examples;
id | text
----+------
1 | val1
2 | val2
3 | val3
(3 rows)
w3=#