迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 >

在 PSQL 中运行 SQL 文件

作者:迹忆客 最近更新:2023/03/20 浏览次数:

有时,你可能需要一次运行多个查询,例如 CRUD 操作。为此,很难使用命令行或终端正确编写 SQL 命令。

如果你知道查询,请将其写入文件并使用扩展名 .sql 保存。它定义文件内的内容是标准查询语言。

从命令行或终端运行 SQL 文件

你想创建一个表并将一些数据插入到表中。

CREATE TABLE BANK(
    ID INT PRIMARY KEY,
    BANK_NAME VARCHAR,
    SWIFTCODE VARCHAR NOT NULL
);

CREATE TABLE ACCOUNT(
    ID INT PRIMARY KEY,
    ACCOUNT_NAME VARCHAR NOT NULL,
    BANK_ID INT,
    BALANCE INT DEFAULT 0,
    CONSTRAINT fk_bank FOREIGN KEY(BANK_ID) REFERENCES BANK(ID)
);
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(1,'State Bank','123456');
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(2,'Central Bank','654321');
INSERT INTO Account(ID,ACCOUNT_NAME,BANK_ID,BALANCE) VALUES(1,'Jhon',1,500);

下面给出了运行此文件的格式。

psql -h <host_address> -d <database_name> -U "database_user" -p "port_no" -a -q -f "file_path"
标志 意义
-h 主机地址(默认为 Localhost
-d 数据库名称(默认数据库是 postgres
-U 用户名(默认用户名是 postgress
-p 端口号(默认端口为 5432
-a 如果 SQL 有任何可打印内容,则打印所有内容
-f SQL 脚本的文件目录

在命令行中运行 SQL 脚本

C:\Users\Admin>psql -h localhost -d postgres -U postgres -p 5432 -a -q -f C:\Users\Admin\Desktop\script1.sql
Password for user postgres:
CREATE TABLE BANK(
    ID INT PRIMARY KEY,
    BANK_NAME VARCHAR,
    SWIFTCODE VARCHAR NOT NULL
);

CREATE TABLE ACCOUNT(
    ID INT PRIMARY KEY,
    ACCOUNT_NAME VARCHAR NOT NULL,
    BANK_ID INT,
    BALANCE INT DEFAULT 0,
    CONSTRAINT fk_bank FOREIGN KEY(BANK_ID) REFERENCES BANK(ID)
);
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(1,'State Bank','123456');
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(2,'Central Bank','654321');
INSERT INTO Account(ID,ACCOUNT_NAME,BANK_ID,BALANCE) VALUES(1,'Jhon',1,500);

从 PSQL Shell 检查

postgres=# \dt
          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | account  | table | postgres
 public | accounts | table | postgres
 public | bank     | table | postgres
 public | logger   | table | postgres
 public | randoms  | table | postgres
 public | students | table | postgres
 public | times    | table | postgres
(7 rows)

postgres=#

从 PSQL Shell 运行 SQL 文件

此外,你可以从 psql shell 运行 SQL 脚本,如下所示:

postgres-# \i C:/Users/Admin/Desktop/script1.sql
CREATE TABLE
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1

在这里,你可以看到已经创建了两个表,并且执行了三个插入命令。有时在 Windows 中,你可能会收到 Permission Denied

这基本上会发生在\i 之后的目录路径中的反斜杠上。

上一篇:使用 PSQL 远程连接到另一个实例

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 PostgreSQL 中使用循环

发布时间:2023/03/20 浏览次数:124 分类:PostgreSQL

在 PL/SQL 中,你可能需要在 Postgres 中使用循环。我们可以使用 FOR 和 WHILE 语句来创建循环。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便