como obter variável dinâmica em uma consulta de um script de shell

como obter variável dinâmica em uma consulta de um script de shell

A última parte do meu roteiro está apenas pendente.

por favor consulte o código abaixo.

master_db_user='root'
master_db_passwd='123'
master_db_port='3306'
master_db_host='localhost'
master_db_name='uppcldashboard'

Now=$(date +"%d-%m-20%Y")



#Preparing script 

#SQL_Query='select * from test_table;'

#MySql Command to connect to a database 

mysql -u$master_db_user -p$master_db_passwd -D$master_db_name -e  'select * from uppcl_amount_details into outfile "/created_files/uppcl.csv" fields terminated by "," lines terminated by "\n"';

mv /created_files/uppcl.csv /created_files/offline_collection$Now.csv

sed -i "1i ID","Cashier_id","Discom","Division_Code","division_Name" /created_files/offline_collection$Now.csv
echo "End of the Script"

ok, a questão principal é esta .. então eu tenho uma coluna na minha tabela chamada posts_dates. por causa da data de lançamento podemos saber que os dados presentes na tabela são daquela data específica.

agora o problema no meu script é que não posso usar nenhuma variável que mude na consulta. simplesmente não funciona, pois considera a consulta uma declaração.

então basicamente o que eu quero é isso

eu faço uma consulta em que não preciso mencionar nenhuma data. eu quero que ele obtenha dados daquele dia específico. porque não posso alterar a consulta todas as vezes.

Não posso ser como where posting_date="2020-03-30", preciso de algo que faça alterações automaticamente na consulta todos os dias. porque será usado para fazer o arquivo daquela data específica.

Realmente preciso de ajuda para esse povo.

Obrigado e cumprimentos, Sagar Mandal

Responder1

Apenas não use aspas simples:

mysql -u$master_db_user -p$master_db_passwd -D$master_db_name \
    -e "select * from uppcl_amount_details where date='$Now' into \
         outfile '/created_files/uppcl.csv' fields terminated by ',' \
          lines terminated by '\n'";

Dessa forma, você também pode obter o nome do arquivo desde o início:

into outfile '/created_files/offline_collection$Now.csv'

Observe também que seu dateformato provavelmente não é o que você deseja. Você tem isto:

$ date +"%d-%m-20%Y"
14-04-202020

Mas você provavelmente quer isso:

$ date +%F
2020-04-14

Então: Now=$(date +%F).

informação relacionada