シェル スクリプトのクエリで動的変数を取得する方法

シェル スクリプトのクエリで動的変数を取得する方法

私の脚本の最後の部分は保留中です。

以下のコードを参照してください。

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"

さて、主な質問はこれです。テーブルにposting_datesという列があります。投稿日があるため、テーブルに存在するデータがその特定の日付のものであることを知ることができます。

現在、私のスクリプト内の問題は、クエリ内で変化する変数を使用できないことです。クエリをステートメントとして受け取るため、単純に機能しません。

つまり私が望んでいるのはこれです

日付を指定する必要のないクエリを作成したいのですが、特定の日のデータを取得したいのです。毎回クエリを変更することはできないからです。

私は、posting_date="2020-03-30" のようなことはできません。クエリを毎日自動的に変更するものが必要です。特定の日付のファイルを作成するために使用されるためです。

この人たちには本当に助けが必要です。

ありがとう、敬具、サガール・マンダル

答え1

一重引用符は使用しないでください。

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'";

こうすることで、ファイル名を最初から取得することもできます。

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

また、dateおそらくあなたのフォーマットはあなたが望むものではないことに注意してください。次のようなフォーマットです:

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

しかし、おそらくこれが欲しいでしょう:

$ date +%F
2020-04-14

それで:Now=$(date +%F)

関連情報