Postgresql psql文件执行与批处理

原创 2015年07月09日 13:59:15
示例:
    新建一个批处理文件batch.sql,它包含若干子文件,子文件与批处理文件不在同一目录下,批处理文件在C:\batchexc,子文件在C:\objects内,batch.sql的内容:

\encoding UTF8;
\cd C:/batchexc
\set ON_ERROR_STOP 1
\set ECHO all
\timing on
\i ../objects/platform.sql;
\i ../objects/cities.sql;
\i ../objects/weather.sql;
\i ../objects/one().sql;
\i ../objects/serial.sql;
   其中:
\encoding 设置客户端字符集编码(可选),适用于数据库服务端与客户端字符集编码不一致的情况。
\cd 切换目录。用于将psql的命令执行目录切换到当前文件所在目录。
\set ON_ERROR_STOP 设置变量ON_ERROR_STOP(可选),当脚本执行出现错误时自动终止。不设则默认继续执行。
\set ECHO all 设置变量ECHO(可选),用于将每一步的执行脚本都显示到标准输出。
\timing on 打开计时功能(可选),计算脚本每一步执行的耗时
\i  执行脚本文件。目录在psql中都是反斜杠(/),相对路径的上级目录用(..)表示。

    调用batch.sql,方法有二:

    方法一:外部命令调用

    psql -U postgres -d mydb -f C:\batchexc\batch.sql -L D:\batch.log

    -U 连接用户 -d 连接数据库 -f 执行脚本 -L 日志文件

    -L 日志文件只记录所有查询的输出结果,内容不是很详细。

    所以可以替换上一种写法为:

    psql -U postgres -d mydb -f C:\batchexc\batch.sql > D:\batch.log

    用“>”替代“-L”,日志文件记录了脚本执行较详细的信息。但错误信息不包括在内,需从cmd的输出界面中获得。

    方法二:元命令调用(此方法需先通过psql登录数据库)
    mydb=# \o D:/batch.log
    mydb=# \i C:/batchexc/batch.sql
    反斜杠(\)开头的代表psql的元命令。\o 表示将后面的查询结果保存到指定的文件中。\i 调用执行文件

    Note:无论调用psql的元命令或外部命令,目前我都没有找到方法可以将错误信息写入日志文件。如果有谁知道,请分享一下。
    这里介绍一个替代的方法:在Postgresql服务器端,安装目录\data目录下,有一个pg_log文件夹,里面保存有PG数据库的错误日志,日志文件一般按天创建,文件命名类似:postgresql-2015-07-09_083104.log,可以在pg_log文件夹下找到需要的错误信息。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

PostgreSQL sql放入文件批量执行

PostgreSQL sql放入文件批量执行

Postgresql通过批处理命令执行sql文件

1、把要执行的sql保存为sqlCode.sql 需要注意的是编码格式最好为ANSI的,之前遇到过UTF-8在有些电脑有失败的情况 2、编写excuteSql.bat文件 该文件的内容为 se...

如何将.sql文件导入到postgresql

1、打开PgAdminIII ,连接服务器。选择要执行该文件的数据库。 2、看到上面栏目有sql字样的图标,点击。如图: 3、打开后,如图:点击导入文件。执行即可。...

psql使用

psql运行的时候读取一个叫psqlrc的配置文件。当psql启动时候,它会查找这个wenjian...

使用postgreSQL命令行工具在shell脚本中自动执行数据库脚本

很多情况下,我们希望编写一个shell脚本,来完成一些诸如创建数据库、创建数据表等等的操作,dan...
  • xocoder
  • xocoder
  • 2014年04月23日 15:43
  • 11177

PostgreSQL自动安装脚本

环境:  OS:CentOS 6.3  DB:PostgreSQL 9.3.2  使用步骤:  分两个脚本,一个是执行文件,另一个是初始化脚本,实际只要点击执行文件install_post...
  • pugu12
  • pugu12
  • 2016年04月25日 11:51
  • 478

postgresql 导入sql文件

cmd 下postgresql 导入sql数据文件> psql -h localhost  -d databaseName -U username-f  filename...
  • hhh80
  • hhh80
  • 2011年01月18日 19:15
  • 12910

Postgresql快速插入测试数据

原创,转载请注意出处 1.创建常规的企业信息表 create table t_centerprises( objectid bigint not null, /*唯一编号(6位行政区...

batch insert in PostgreSQL

batch insert in PostgreSQL

postgresql数据库--psql、pg_dump命令带密码执行sql语句

pg_dump: pg_dump -a -t tbl_test "host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=postgres password=...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Postgresql psql文件执行与批处理
举报原因:
原因补充:

(最多只允许输入30个字)