• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 id3;
    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. 切换用户登入

    su postgres
    psql 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,登入之后执行:

    执行前:

    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命令执行

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

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

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

    方式一:

    连接db后执行SQL文件

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

    psql -d db1 -U userA

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

    \i /pathA/xxx.sql

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

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

    方式二:

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

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

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

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

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • postgresql数据合并,多条数据合并成1条的操作
    • postgresql数据添加两个字段联合唯一的操作
    • postgreSQL使用pgAdmin备份服务器数据的方法
    • postgreSQL查询结果添加一个额外的自增序列操作
    • PostgreSQL三种自增列sequence,serial,identity的用法区别
    • PostgreSQL对GROUP BY子句使用常量的特殊限制详解
    上一篇:PostgreSQL三种自增列sequence,serial,identity的用法区别
    下一篇:postgreSQL查询结果添加一个额外的自增序列操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PostgreSQL 实现sql放入文件批量执行 PostgreSQL,实现,sql,放入,文件,