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

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

私のスクリプトの最後の部分は未定です。

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

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という列があります。公開日によって、テーブル内のデータがその特定の日付のものであることがわかります。

今私のスクリプトの問題は、クエリで変更された変数を使用できないことです。クエリをステートメントとして使用するため、まったく機能しません。

だから基本的に私が望むのはこれです。

日付に言及する必要のないクエリを作成したいと思います。その日のデータを手に入れることを願っています。毎回クエリを変更することはできないからです。

毎日クエリで自動的に変更する必要があるpost_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)

関連情報