PostgreSQL:在单个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

我正在尝试创建一个数据库,并在单个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 (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=#