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.切换用户登入
supostgres psqlpostgres
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,登入之后执行:
执行前:
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命令执行
pslq-dpostgres-Upostgres-f/home/postgres/aa.sql
补充:PostgreSQL-用psql运行SQL文件
对于预先写好的SQL文件,比如/home/user1/updateMyData.sql,可以有两种方式来运行这个SQL文件。
方式一:
连接db后执行SQL文件
首先通过psql连接到对应的db:
psql-ddb1-UuserA
接着输入密码,进入数据库后,输入:
\i/pathA/xxx.sql
这里有个问题,如果你把SQL文件的路径里的路径分隔符写成了\,会报错说Permissiondenied。
这里的文件路径必须使用Linux平台下的路径分隔符/,否则会报错。
方式二:
直接通过psql命令执行SQL文件
这种方式无需先登录数据库,直接用一个命令就可以了:
psql-ddb1-UuserA-f/pathA/xxx.sql
接着输入密码即可执行SQL文件到对应的db里。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。