表添加列.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import os
  2. import sys
  3. env = 'prod'
  4. if len(sys.argv) >= 2:
  5. env = sys.argv[1]
  6. conf_path = os.path.abspath(__file__).split("energy-data-trans")[0] + f"/energy-data-trans/conf/etl_config_{env}.yaml"
  7. os.environ['ETL_CONF'] = conf_path
  8. os.environ['env'] = env
  9. db_last = ''
  10. if env != 'dev':
  11. db_last = db_last + '_' + env
  12. query_sql = f"""
  13. SELECT
  14. t.TABLE_NAME
  15. FROM
  16. information_schema.`TABLES` t
  17. WHERE
  18. t.TABLE_SCHEMA = 'energy_data{db_last}'
  19. AND t.TABLE_NAME LIKE 'WOF%%_minute'
  20. AND t.TABLE_NAME NOT IN (
  21. SELECT
  22. table_name
  23. FROM
  24. information_schema.`COLUMNS` a
  25. WHERE
  26. a.TABLE_SCHEMA = 'energy_data{db_last}'
  27. AND a.TABLE_NAME LIKE 'WOF%%_minute'
  28. AND a.COLUMN_NAME = 'main_bearing_temperature_2'
  29. )
  30. """
  31. def get_table_count(table_name):
  32. query_begin = time.time()
  33. query_sql = f"""
  34. select count(1) as count from {table_name}
  35. """
  36. print(table_name, '统计条数耗时', time.time() - query_begin, trans.execute(query_sql)[0]['count'])
  37. def get_update_sql(table_name):
  38. update_sql = f"""
  39. ALTER TABLE {table_name}
  40. ADD COLUMN `main_bearing_temperature_2` double DEFAULT NULL COMMENT '主轴承轴承温度2',
  41. ADD COLUMN `grid_a_phase_current` double DEFAULT NULL COMMENT '电网A相电流',
  42. ADD COLUMN `grid_b_phase_current` double DEFAULT NULL COMMENT '电网B相电流',
  43. ADD COLUMN `grid_c_phase_current` double DEFAULT NULL COMMENT '电网C相电流',
  44. ADD COLUMN `reactive_power` double DEFAULT NULL COMMENT '无功功率';
  45. """
  46. return update_sql
  47. if __name__ == '__main__':
  48. from service.common_connect import trans
  49. # tables = trans.execute(query_sql)
  50. # print(tables)
  51. tables = list()
  52. tables.append({'TABLE_NAME': 'WOF093400005_minute'})
  53. import time
  54. begin_time = time.time()
  55. for table in tables:
  56. table_name = '`' + table['TABLE_NAME'] + '`'
  57. get_table_count(table_name)
  58. update_time = time.time()
  59. trans.execute(get_update_sql(table_name))
  60. print(table_name, '更新耗时', time.time() - update_time)
  61. print(len(tables), '张表,总耗时:', time.time() - begin_time)