在我的Windows批处理文件中,我执行一个sql,其中包含一个删除行的查询,如果符合条件,这意味着它删除了不需要的数据行。假设sql执行没有错误,有没有办法获取已删除行的计数?
这样做的目的是,如果有删除的行,我可以记录。
IF DELETED_ROWS_COUNT > 0 (
echo Some invalid rows are DELETED.
)
这就是我执行sql文件的方式。
psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME% -q -f "%HOME%\bin\import.sql" 2>> "%importfilename%"
或者如果您有任何其他方法比这个想法更可行,我们将非常感激。
答案 0 :(得分:1)
一种选择是使用可写CTE获取已删除的元组计数,例如
with del as (delete from a returning id) select count (*) from del;
AFAIK psql
没有提供任何简单的方法来获取受影响的行数,而无需解析命令标记输出,如
DELETE 8
来自标准输出。
另外,我建议使用psql -qAtX
在没有标题/格式的安静元组模式下运行,并忽略任何psqlrc
。