レコード-mysql操作-crontab操作
11378 ワード
mysql基本操作
show databases; use[データベース名]
show tables; 参照先:https://www.cnblogs.com/dannyyao/p/6533567.html
構築文show create table t_の表示xifan_user_login;
どの列descがあるかを表示します.xifan_user_login;
表示行数制限select*from t_xifan_user_login limit 10;
表示順序order byデフォルト昇順(昇順asc、降順desc)select distinct f_day from t_xifan_user_login order by f_day desc; select distinct f_act from t_duration_all order by f_act
join操作https://www.cnblogs.com/fozero/p/6129537.htmlleft joinを例とする:left joinはA表の記録を基礎とし、Aは左表、Bは右表、left joinは左表を基準とする.すなわち、左テーブル(A)のレコードは全て表示するが、右テーブル(B)は検索条件に合致するレコードのみ表示する(例:A.aID=B.bID).B表の記録不足箇所はすべてNULLである.
in操作SELECT*FROM Persons WHERE LastName IN(‘Adams’,‘Carter’)
グループbyグループ統計データの時に便利SELECT site_id, SUM(access_log.count) AS nums FROM access_log GROUP BY site_id; http://www.runoob.com/sql/sql-groupby.html
二crontab
タイミングタスクcrontab-l既存のcrontabタスクcrontab-e作成crontabタスクを表示
例1 0*/1**source~/.bash_profile; cd/home/liubingqi_rd/baidu/hpb-feed-vertical/offline-xifan/xifan_shangyang/xifan_rongzai/; sh run.sh >>/home/liubingqi_rd/baidu/hpb-feed-vertical/offline-xifan/xifan_shangyang/xifan_rongzai/crontab_log/task_log 2>&1
1時間に1回、sourceは独自の構成で実行されます.この文を付けないと、pythonバージョンの問題、ライブラリの問題などが発生する可能性があります.cdはスクリプトのディレクトリに切り込み、shはスクリプトを実行し、指定したファイルにスクリプトを出力し、作文log、2>&1、&1に対してより正確にはファイル記述子1、1は標準出力、stdoutを識別する.2の場合、標準エラー、stderrを表します.2>&1は、標準エラーを標準出力にリダイレクトすることを意味します.
1位は0で、*または毎分1回実行する場合は、次のように説明します.https://blog.csdn.net/qq125293177/article/details/80434218
例2 0 1**source~/.bash_profile; cd/home/liubingqi_rd/mysql_data/; sh group.sh >>/home/liubingqi_rd/mysql_data/crontab_log/task_log 2>&1
毎日1時にスクリプトを実行
使用方法:https://www.jianshu.com/p/d93e2b177814
crontabタスクの例:crontab-e 0*/1**source~/.bash_profile; cd/home/work/liubingqi/task20190227_user_tmp/; sh group.sh >>/home/work/liubingqi/task20190227_user_tmp/crontab_log/task_log 2>&1
shellの例
その中のexp_group.pyプログラムは次のとおりです.
show databases; use[データベース名]
show tables; 参照先:https://www.cnblogs.com/dannyyao/p/6533567.html
構築文show create table t_の表示xifan_user_login;
どの列descがあるかを表示します.xifan_user_login;
表示行数制限select*from t_xifan_user_login limit 10;
表示順序order byデフォルト昇順(昇順asc、降順desc)select distinct f_day from t_xifan_user_login order by f_day desc; select distinct f_act from t_duration_all order by f_act
join操作https://www.cnblogs.com/fozero/p/6129537.htmlleft joinを例とする:left joinはA表の記録を基礎とし、Aは左表、Bは右表、left joinは左表を基準とする.すなわち、左テーブル(A)のレコードは全て表示するが、右テーブル(B)は検索条件に合致するレコードのみ表示する(例:A.aID=B.bID).B表の記録不足箇所はすべてNULLである.
in操作SELECT*FROM Persons WHERE LastName IN(‘Adams’,‘Carter’)
グループbyグループ統計データの時に便利SELECT site_id, SUM(access_log.count) AS nums FROM access_log GROUP BY site_id; http://www.runoob.com/sql/sql-groupby.html
二crontab
タイミングタスクcrontab-l既存のcrontabタスクcrontab-e作成crontabタスクを表示
例1 0*/1**source~/.bash_profile; cd/home/liubingqi_rd/baidu/hpb-feed-vertical/offline-xifan/xifan_shangyang/xifan_rongzai/; sh run.sh >>/home/liubingqi_rd/baidu/hpb-feed-vertical/offline-xifan/xifan_shangyang/xifan_rongzai/crontab_log/task_log 2>&1
1時間に1回、sourceは独自の構成で実行されます.この文を付けないと、pythonバージョンの問題、ライブラリの問題などが発生する可能性があります.cdはスクリプトのディレクトリに切り込み、shはスクリプトを実行し、指定したファイルにスクリプトを出力し、作文log、2>&1、&1に対してより正確にはファイル記述子1、1は標準出力、stdoutを識別する.2の場合、標準エラー、stderrを表します.2>&1は、標準エラーを標準出力にリダイレクトすることを意味します.
1位は0で、*または毎分1回実行する場合は、次のように説明します.https://blog.csdn.net/qq125293177/article/details/80434218
例2 0 1**source~/.bash_profile; cd/home/liubingqi_rd/mysql_data/; sh group.sh >>/home/liubingqi_rd/mysql_data/crontab_log/task_log 2>&1
毎日1時にスクリプトを実行
使用方法:https://www.jianshu.com/p/d93e2b177814
crontabタスクの例:crontab-e 0*/1**source~/.bash_profile; cd/home/work/liubingqi/task20190227_user_tmp/; sh group.sh >>/home/work/liubingqi/task20190227_user_tmp/crontab_log/task_log 2>&1
shellの例
today=$(date +%Y%m%d)
echo "today:${today}"
current=$(date +%Y%m%d%H%M%S)
echo "current:${current}"
# get data from mysql
echo "get data from mysql"
mysql -h XXXXXX.com -Dsn_db -P 9030 -uXXXX -pXXXXXX --execute="select * from t_xifan_user_login where f_day='${today}'" -Ns > user_login_${today}
#why red?
echo "wait 60s"
sleep 60
# run python
echo "run python"
python exp_group.py ${today} >> log/${today}
echo "wait 60s"
sleep 60
#put data
echo "put data"
echo "show load where label = 'hour_t_xifan_user_exp_group_load${current}'"
curl --location-trusted -u XXXXXX:XXXXX -T t_xifan_user_exp_group_${today} http://XXXXXXXX:8030/api/sn_db/t_xifan_user_exp_group/_load?label=hour_t_xifan_user_exp_group_load${current}%26max_filter_ratio=0
echo "wait 20s"
sleep 20
echo "done"
その中のexp_group.pyプログラムは次のとおりです.
import sys
if __name__ == '__main__':
count = 0
#input = "user_login_20190212" + sys.argv[1]
input = "user_login_" + sys.argv[1]
output = "t_xifan_user_exp_group_" + sys.argv[1]
f1 = open(output, 'a')
for line in open(input):
row = line.split('\t')
cuid = row[5]
total = 0
for i in range(0, len(cuid)):
if(cuid[i] == '|'):
break
if (cuid[i] >= '0' and cuid[i] <= '9'):
total = total + int(cuid[i])
if total == 0:
continue
sid = total % 10
tmp_str = row[0] + '\t' + str(sid) + '\t' + cuid + '
'
f1.write(tmp_str)
count = count + 1
if count % 1000 == 0:
print count
f1.close()
print "done"