rds_order_ck.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. """把rds的订单数据同步到clickhouse
  2. @auth ck
  3. @date 20201127
  4. """
  5. from model.util.DataBaseUtils import MysqlUtils
  6. from model.util.CkUtils import CkUtils
  7. from model.util.DateUtils import DateUtils
  8. from datetime import datetime
  9. from model.common.log import logger
  10. log=logger()
  11. db = MysqlUtils()
  12. ck = CkUtils()
  13. dt = DateUtils()
  14. import sys
  15. from model.util.DingTalkUtils import DingTalkUtils
  16. def run(mydt):
  17. log.debug("run [{}] data".format(mydt))
  18. col = "date,stage,platform,channel,channel_id,user_id,order_time,reg_time,amount,from_novel,order_id"
  19. sql ="select * from `order` where date=UNIX_TIMESTAMP('{}') and platform!='阳光'".format(mydt)
  20. data = db.quchen_text.getData(sql)
  21. # 掌中云时间格式转换
  22. data1 = []
  23. for x in data:
  24. li = list(x)
  25. li[6] = li[6].replace('T',' ').replace('+08:00','').replace('/','-')
  26. if li[6] == None or li[6] == '':
  27. li[6] = '0000-00-00 00:00:00'
  28. if li[7]==None or li[7]=='':
  29. li[7]='0000-00-00 00:00:00'
  30. else:
  31. li[7] = li[7].replace('T',' ').replace('+08:00','').replace('/','-')
  32. try:
  33. li[6]=str(datetime.strptime(li[6],'%Y-%m-%d %H:%M'))
  34. li[7]=str(datetime.strptime(li[7],'%Y-%m-%d %H:%M'))
  35. # li[7]=str(datetime.strptime(li[7],'%Y/%m/%d %H:%M:%S'))
  36. except:
  37. pass
  38. # print("======================")
  39. # try:
  40. # li[6] = str(datetime.strptime(li[6][:17], '%Y-%m-%d %H:%M'))
  41. # li[7] = str(datetime.strptime(li[7][:17], '%Y/%m/%d %H:%M'))
  42. # except:
  43. # pass
  44. # li[6]='2020-11-01 00:00:00'
  45. # li[7]='2020-11-01 00:00:00'
  46. li[6] =li[6][:19]
  47. li[7] =li[7][:19]
  48. li[9] = '' if li[9] is None else li[9]
  49. li[5] = '' if li[5] is None else li[5]
  50. li[1] = '' if li[1] is None else li[1]
  51. data1.append(tuple(li))
  52. # 删除分区
  53. ck.execute("alter table order drop partition '{}' ".format(mydt))
  54. ck.insertMany("order", col, tuple(data1))
  55. if __name__ == '__main__':
  56. # dt_li =dt.getDateLists('2019-03-18','2020-01-01')
  57. # for i in dt_li:
  58. # run(i)
  59. if sys.argv.__len__()>1:
  60. run(dt.get_n_days(-1))
  61. today=dt.get_n_days()
  62. try:
  63. run(today)
  64. except Exception as e:
  65. DingTalkUtils.send("订单同步到ck出错:"+e,'18860455786,')