Pau*_*ems 1 windows postgresql shell batch-file
我创建了一个pgsql脚本并将其保存到文件中.这个脚本正在创建idex.我需要在几个数据库上运行此脚本.我在Windows 8上使用PostgreSQL 9.3.
我已经创建了一个批处理文件来在每个数据库上调用psql并运行脚本.这工作正常,除了在shell中我有比我的输出文件更多的消息.当出现问题时(即失败的唯一索引),我会在shell中看到它,但不会在我的输出文件中看到它.而且因为shell充满了消息,我错过了错误和警告.
在我使用的pgsql脚本中
SET client_min_messages to 'LOG';
raise log 'Dropped index %', l_index_name;
Run Code Online (Sandbox Code Playgroud)
我的Windows批处理文件是
@echo off
set _psql="D:\Program Files\PostgreSQL\9.3\bin\psql.exe"
set _server=localhost
set _port=5432
set _file=create_indexes.sql
set _log=create_indexes.log
FOR %%G IN (db1 db2 db3) DO (
%_psql% -d %%G -h %_server% -p %_port% -U postgres -w postgres <%_file% >>%_log%
echo Done with %%G
)
pause
Run Code Online (Sandbox Code Playgroud)
我一直在阅读关于使用> output.log的帖子,比如
create_indexes.bat >output.log
Run Code Online (Sandbox Code Playgroud)
该文件已创建,但只有一些不相关的消息.
任何建议都非常受欢迎.
您不仅需要重定向stdout(流1),还需要重定向stderr(流2)
create_indexes.bat >output.log 2>&1
Run Code Online (Sandbox Code Playgroud)
也就是说,将stderr的输出发送到正在发送流1的任何地方
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |