쉘 스크립트의 쿼리에서 동적 변수를 얻는 방법

쉘 스크립트의 쿼리에서 동적 변수를 얻는 방법

내 스크립트의 마지막 부분은 미정입니다.

아래 코드를 참고하세요.

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"과 같은 항목을 가질 수는 없습니다. 특정 날짜에 대한 파일을 생성하는 데 사용되기 때문입니다.

이 사람은 정말 도움이 필요해요.

감사와 안부 인사, Sagar Mandal

답변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).

관련 정보