rds_order_ck.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. def run(mydt):
  16. log.debug("run [{}] data".format(mydt))
  17. col = "date,stage,platform,channel,channel_id,user_id,order_time,reg_time,amount,from_novel,order_id"
  18. sql ="select * from `order` where date=UNIX_TIMESTAMP('{}') and platform!='阳光'".format(mydt)
  19. data = db.quchen_text.getData(sql)
  20. # 掌中云时间格式转换
  21. data1 = []
  22. for x in data:
  23. li = list(x)
  24. li[6] = li[6].replace('T',' ').replace('+08:00','').replace('/','-')
  25. if li[6] == None or li[6] == '':
  26. li[6] = '0000-00-00 00:00:00'
  27. if li[7]==None or li[7]=='':
  28. li[7]='0000-00-00 00:00:00'
  29. else:
  30. li[7] = li[7].replace('T',' ').replace('+08:00','').replace('/','-')
  31. try:
  32. li[6]=str(datetime.strptime(li[6],'%Y-%m-%d %H:%M'))
  33. li[7]=str(datetime.strptime(li[7],'%Y-%m-%d %H:%M'))
  34. # li[7]=str(datetime.strptime(li[7],'%Y/%m/%d %H:%M:%S'))
  35. except:
  36. pass
  37. # print("======================")
  38. # try:
  39. # li[6] = str(datetime.strptime(li[6][:17], '%Y-%m-%d %H:%M'))
  40. # li[7] = str(datetime.strptime(li[7][:17], '%Y/%m/%d %H:%M'))
  41. # except:
  42. # pass
  43. # li[6]='2020-11-01 00:00:00'
  44. # li[7]='2020-11-01 00:00:00'
  45. li[6] =li[6][:19]
  46. li[7] =li[7][:19]
  47. li[9] = '' if li[9] is None else li[9]
  48. li[5] = '' if li[5] is None else li[5]
  49. li[1] = '' if li[1] is None else li[1]
  50. data1.append(tuple(li))
  51. # 删除分区
  52. ck.execute("alter table order drop partition '{}' ".format(mydt))
  53. ck.insertMany("order", col, tuple(data1))
  54. if __name__ == '__main__':
  55. # dt_li =dt.getDateLists('2019-03-18','2020-01-01')
  56. # for i in dt_li:
  57. # run(i)
  58. if sys.argv.__len__()>1:
  59. run(dt.get_n_days(-1))
  60. today=dt.get_n_days()
  61. run(today)