gpt4 book ai didi

windows - 使用 Windows 将 PostgreSQL shell 输出保存到文件

转载 作者:可可西里 更新时间:2023-11-01 11:07:24 28 4
gpt4 key购买 nike

我已经创建了一个 pgsql 脚本并将其保存到一个文件中。该脚本正在创建索引。我需要在多个数据库上运行这个脚本。我在 Windows 8 上使用 PostgreSQL 9.3。

我已经创建了一个批处理文件来在每个数据库上调用 psql 并运行脚本。这工作正常,除了在 shell 中我有比我的输出文件中更多的消息。意思是当出现问题时(即失败的唯一索引)我在 shell 中看到它但在我的输出文件中看不到。因为 shell 充满了消息,所以我遗漏了错误和警告。

在我的 pgsql 脚本中我使用

    SET client_min_messages to 'LOG';
raise log 'Dropped index %', l_index_name;

我的 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

我一直在阅读关于使用 >output.log 的帖子,比如

    create_indexes.bat >output.log

文件已创建,但只有几条不相关的消息。

我们非常欢迎任何建议。

最佳答案

您不仅需要重定向 stdout(流 1),还需要重定向 stderr(流 2)

create_indexes.bat >output.log 2>&1

也就是说,将 stderr 的输出发送到流 1 正在发送的任何地方

关于windows - 使用 Windows 将 PostgreSQL shell 输出保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24887494/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com