您好,我正在创建一个批处理文件以执行查询并为输出写入日志文件。因此,基于某种条件,将执行两个查询。 因此,我试图将查询的输出值存储到变量中,然后使用该变量值检查条件。 但是这里我面临一个问题,我应该如何假设使用psql命令声明输出值并将其存储到变量中。 请帮忙!! 这是我尝试过的:
SET /A a = psql -t -U postgres -d rpd -c "select count(*) from rpd.rpm_rpd_count"
SET /A b = 1
if %a% == 3 goto is_stat
else goto is_start
REM to copy the log
:is_start
psql -U postgres -d rpd -c "SELECT
a.table_name , 'MATCH' status FROM rpd.rpm_rpd_count A WHERE
a.rpd_count = a.rpm_count UNION ALL SELECT a.table_name, 'NOT MATCH'
AS status FROM rpd.rpm_rpd_count A WHERE a.rpd_count <> a.rpm_count;" >> C:\Users\admin\Desktop\err.log
goto END
:is_stat
psql -U postgres -d rpd -c "SELECT a.table_name , 'MATCH'
status FROM rpd.rpm_rpd_count A WHERE a.rpd_count = a.rpm_count;" >>
C:\Users\admin\Desktop\err.log
goto END
:END
echo %b% >> C:\Users\admin\Desktop\err.log
这里的问题是变量 a
中没有保存任何内容答案 0 :(得分:1)
您可以使用for循环来解析输出
for /f %%i in ('psql -t -U postgres -d rpd -c "select count(*) from rpd.rpm_rpd_count"') do set A=%%i
(如果您在命令行控制台中尝试,请使用单个%
,然后在批处理文件中使用%%
双击)