내 스크립트의 마지막 부분은 미정입니다.
아래 코드를 참고하세요.
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)
.