这篇文章主要介绍了PostgreSQL实现sql放入文件批量执行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。
PostgreSQLsql放入文件,登入数据库之后批量执行
1.建立测试sql:
viaa.sql插入:猜测每条sql语句是用;分隔的,function中的多个;也会自动识别。
createtabletb1(idinteger);
insertintotb1selectgenerate_series(1,10);
select*fromtb1;
deletefrom
tb1whereid<3;
select*fromtb1;
2.将aa.sql放入./src/postgresql-9.3.5/src/tutorial下(./src/postgresql-9.3.5/src/tutorial是PostgreSQL自动识别的目录,当然也可以放在任意目录,比如/home/postgres/aa.sql)
3.切换用户登入
1
2supostgrespsqlpostgres
4.执行:当输入\i时候,会自动检测到./src/postgresql-9.3.5/src/tutorial下的文件,PostgreSQL的测试例子也放在此目录下
postgres=#\iaa.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
(10rows)
CREATETABLE
INSERT010
id
----
1
2
3
4
5
6
7
8
9
10
(10rows)
DELETE2
id
----
3
4
5
6
7
8
9
10
(8rows)
postgres=#
postgres=#\dtb1
Table"public.tb1"
Column|Type|Modifiers
--------+---------+-----------
id|integer|
第二个例子:
vibb.sql:写入一个function:
createfunctionfunc1()returnsvoidas$$
declare
begin
deletefrompersonwhereid>5;
deletefromtb1whereid>5;
end
$$languageplpgsql;
selectfunc1();
执行前:
postgres=#select*fromperson;
id|name
----+------
1|join
2|join
3|join
4|join
5|join
6|join
7|join
8|join
9|join
10|join
(10rows)
postgres=#select*fromtb1;
id
----
3
4
5
6
7
8
9
10
(8rows)
执行:
postgres=#\ibb.sql
CREATEFUNCTION
func1
-------
(1row)
执行后:
postgres=#select*fromperson;
id|name
----+------
1|join
2|join
3|join
4|join
5|join
(5rows)
postgres=#select*fromtb1;
id
----
3
4
5
(3rows)
postgres=#
5.也可以使用psql命令执行
1pslq-dpostgres-Upostgres-f/home/postgres/aa.sql
补充:PostgreSQL-用psql运行SQL文件
对于预先写好的SQL文件,比如/home/user1/updateMyData.sql,可以有两种方式来运行这个SQL文件。
方式一:
连接db后执行SQL文件
首先通过psql连接到对应的db:
1psql-ddb1-UuserA
接着输入密码,进入数据库后,输入:
1\i/pathA/xxx.sql
这里有个问题,如果你把SQL文件的路径里的路径分隔符写成了\,会报错说Permissiondenied。
这里的文件路径必须使用Linux平台下的路径分隔符/,否则会报错。
方式二:
直接通过psql命令执行SQL文件
这种方式无需先登录数据库,直接用一个命令就可以了:
1psql-ddb1-UuserA-f/pathA/xxx.sql
接着输入密码即可执行SQL文件到对应的db里。
还没有内容