【问题标题】:mysql query message save into table or external filemysql查询消息保存到表或外部文件中
【发布时间】:2021-12-23 15:20:30
【问题描述】:

我有多个存储过程在 mysql 中执行 ETL 工作。通常,它会在服务器上运行一夜。

在存储过程内部有多个更新语句,如

update table1 set column1=3 when column2 = 4

如果有什么办法,我可以保持 mysql 工作台的结果像 Rows matched: 100 Changed: 50 Warnings: 0

对于我在 mysql 表或外部文件中运行的每条语句?

更喜欢mysql原生方法。如果没有,我可以使用任何 python 吗?

【问题讨论】:

    标签: mysql python-3.x sqlalchemy mysql-workbench


    【解决方案1】:

    可以使用ROW_COUNT() 函数检索“行已更改”。

    “行匹配”需要在一个技巧中使用用户定义的变量。

    CREATE TABLE test (id INT, val INT);
    INSERT INTO test VALUES
    (1,1), (1,2), (1,3), (2,4);
    

    现在我们要执行UPDATE test SET val = 3 WHERE id = 1; 并计算金额。

    UPDATE test
    -- add user-defined variable for matched rows counting
    CROSS JOIN ( SELECT @matched := 0 ) init_variable
    -- increment matched rows counter (this expression is always TRUE)
    SET val = CASE WHEN @matched := @matched + 1 
    -- update the column
                   THEN 3
                   END
    WHERE id = 1;
    
    SELECT @matched matched, ROW_COUNT() changed;
    
    匹配 |改变了 ------: | ------: 3 | 2

    db小提琴here

    如果在一个查询中应该更新多于一列,那么只有一个表达式必须伴随计数器增量。

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 2014-02-20
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多