【问题标题】:How to get number of rows affected, while executing MySQL query from bash?如何在从 bash 执行 MySQL 查询时获取受影响的行数?
【发布时间】:2010-11-08 04:55:24
【问题描述】:

我知道如何从 bash 执行 MySQL 查询/命令:

mysql -u[user] -p[pass] -e "[mysql commands]"

mysql -u[user] -p[pass] `<<`QUERY_INPUT

[mysql commands]

QUERY_INPUT

如何捕获受查询影响的行数?
我试着做:

variable='`mysql -u[user] -p[pass] -e "[mysql commands]"`'

它确实执行了命令,但它不返回受影响的行数。

【问题讨论】:

    标签: mysql bash


    【解决方案1】:

    SELECT ROW_COUNT();
    

    作为批处理中的最后一条语句并解析输出

    【讨论】:

    • 是的,这确实有效,并且更优雅且更易于解析输出。谢谢,很有帮助。
    • 这是在 MySQL 5 中引入的。如果您在使用 4.x 时遇到问题,则必须解析输出
    • 使用@florin.bunau 的答案,最好查看更新/插入/删除了多少行。
    • 我建议您在-e 之前添加-s(静音)以及-N 以删除标题行。您应该仅从中获取实际数值。看到这个:stackoverflow.com/questions/25539218/…
    【解决方案2】:

    我可能已经回答了自己这个问题,一直在查看参数,并且显然使用“-v -v -v”作为 mysql 命令的参数,这迫使它更加冗长,并且它会吐出受影响的行数。

    【讨论】:

    • 如果您想了解更多详细信息(包括查询执行时间),-vvv 非常棒。
    • @Qtax,-v-vvv有什么区别吗?
    • @Pacerier,是的,它们是不同的。对于您添加的每个v,您将获得更多的详细信息和更多信息(例如查询执行时间等)。
    • @Qtax,很奇怪,不管vs 的数量如何,我似乎都得到了相同的输出。 -vvv vs -v -v -v vs -v -vv vs -vv -v 怎么样?
    【解决方案3】:

    不是答案,而是有用的补充,您还可以尝试其他 MySQL 信息函数(包括 ROW_COUNT() )来为您提供所需的特定信息。 See MySQL reference here

    【讨论】:

    • 如果我运行更新查询并想查看更改了多少行,这有什么帮助?
    • 当前答案或问题中的任何地方都没有“详细转储”...
    • 如果您查看了该链接中的函数引用,ROW_COUNT() 是其中一个函数,它声明它提供“更新的行数”。那么为什么投反对票呢?
    • @tobyodavies - 我对详细转储的评论来自上面的 Blinker 的回答“使用“-v -v -v”作为 mysql 命令的参数强制它更详细”。
    • 好的,我上次查看时实际上并没有看到 row_count 函数 - 我以为您链接到的页面没有回答问题的唯一函数。除非你编辑,否则不能取消 -1
    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多