Estou tentando capturar o número de linhas excluídas da tabela mysql de um script bash usando --execute
option, e parece que não está funcionando. Eu li algumas perguntas onde menciona o uso -vv
de options, funciona, mas não como esperado. Eu usei várias combinações de -vvv --silent
e --skip-column-names
com o comando mysql e awk e sed também, mas nada parece funcionar.
O cliente MySQL émysql Ver 8.0.39 for Linux on aarch64 (MySQL Community Server - GPL)
Como você pode gerar resultados de consulta UPDATE / INSERT ao usar MySQL -e,--execute?
Aqui está o código
deleted=$(mysql --login-path=lp1 --init-command="SET SQL_LOG_BIN = 0" -vv --silent --skip-column-names db -e "delete from table1 where column1 date_format('2022-04-01 00:00:00','%Y-%m-%d 00:00:00') and date_format('2023-03-31 23:59:59','%Y-%m-%d 23:59:59') order by column1 limit 20;")
echo ${deleted}
A declaração exclui certas linhas, mas imprime uma saída como esta
-------------- delete from table1 where column1 between date_format('2022-04-01 00:00:00','%Y-%m-%d 00:00:00') and date_format('2023-03-31 23:59:59','%Y-%m-%d 23:59:59') order by column1 limit 20 -------------- Query OK, 20 rows affected -------------- 1 row in set Bye
Se eu adicionar mais uma linha para obter o row_count, ele me dará -1
mysql --login-path=${LP_wallet_0} -e "select row_count()"
Mesmo se eu tentar row_count() na mesma consulta de exclusão, ele apenas anexa esta linhaselect row_count() -------------- 2 1 row in set Bye
Tentei diferentes combinações de --vv --silent --skip-column-names
e awk
e sed
também, mas não consegui fazer a contagem.