レコード-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の例
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"