加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

PostgreSQL 完成sql放入文件批量执行

发布时间:2021-10-11 10:12:47 所属栏目:外闻 来源:互联网
导读:这篇文章主要介绍了PostgreSQL 实现sql放入文件批量执行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。 PostgreSQL sql放入文件,登入数

这篇文章主要介绍了PostgreSQL 实现sql放入文件批量执行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

 

PostgreSQL sql放入文件,登入数据库之后批量执行

 

1. 建立测试sql:

 

vi aa.sql插入:猜测每条sql语句是用;分隔的,function中的多个;也会自动识别。

 

create table tb1(id integer);

insert into tb1 select generate_series(1,10);

select * from tb1;

delete from

tb1 where id<3;

select * from tb1;

 

 

 

2. 将aa.sql放入 ./src/postgresql-9.3.5/src/tutorial下(./src/postgresql-9.3.5/src/tutorial是PostgreSQL自动识别的目录,当然也可以放在任意目录,比如/home/postgres/aa.sql)

 

3. 切换用户登入

 

1

 

2su postgrespsql postgres

 

4. 执行:当输入i时候,会自动检测到./src/postgresql-9.3.5/src/tutorial下的文件,PostgreSQL的测试例子也放在此目录下

 

postgres=# i aa.sql (i /home/postgres/aa.sql)

 id | name

----+------

 1 | join

 2 | join

 3 | join

 4 | join

 5 | join

 6 | join

 7 | join

 8 | join

 9 | join

 10 | join

(10 rows)

 

CREATE TABLE

INSERT 0 10

 id

----

 1

 2

 3

 4

 5

 6

 7

 8

 9

 10

(10 rows)

 

DELETE 2

 id

----

 3

 4

 5

 6

 7

 8

 9

 10

(8 rows)

 

postgres=#

 

 

 

postgres=# d tb1

   Table "public.tb1"

 Column | Type  | Modifiers

--------+---------+-----------

 id   | integer |

 

 

 

第二个例子:

 

vi bb.sql:写入一个function:

 

create function func1()returns void as $$

declare

begin

delete from person where id>5;

delete from tb1 where id>5;

end

$$language plpgsql;

 

select func1();

 

 

 

执行前:

 

postgres=# select * from person ;

 id | name

----+------

 1 | join

 2 | join

 3 | join

 4 | join

 5 | join

 6 | join

 7 | join

 8 | join

 9 | join

 10 | join

(10 rows)

 

postgres=# select * from tb1 ;

 id

----

 3

 4

 5

 6

 7

 8

 9

 10

(8 rows)

 

 

 

执行:

 

postgres=# i bb.sql

CREATE FUNCTION

 func1

-------

 

(1 row)

 

 

 

执行后:

 

postgres=# select * from person ;

 id | name

----+------

 1 | join

 2 | join

 3 | join

 4 | join

 5 | join

(5 rows)

 

postgres=# select * from tb1 ;

 id

----

 3

 4

 5

(3 rows)

 

postgres=#

 

 

 

5. 也可以使用psql命令执行

 

1pslq -d postgres -U postgres -f /home/postgres/aa.sql

 

补充:PostgreSQL - 用psql 运行SQL文件

 

对于预先写好的SQL文件,比如/home/user1/updateMyData.sql, 可以有两种方式来运行这个SQL文件。

 

方式一:

 

连接db后执行SQL文件

 

首先通过psql连接到对应的db:

 

1psql -d db1 -U userA

 

接着输入密码,进入数据库后,输入:

 

1i /pathA/xxx.sql

 

这里有个问题,如果你把SQL文件的路径里的路径分隔符写成了,会报错说Permission denied。

 

这里的文件路径必须使用Linux平台下的路径分隔符/,否则会报错。

 

方式二:

 

直接通过psql命令执行SQL文件

 

这种方式无需先登录数据库,直接用一个命令就可以了:

 

1psql -d db1 -U userA -f /pathA/xxx.sql

 

接着输入密码即可执行SQL文件到对应的db里。

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读