You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
1.1 KiB

5 months ago
from connectors.mysql_connector import MySQLConnector
from connectors.clickhouse_connector import ClickHouseConnector
from mappers.data_mapper import DataMapper
from services.sync_service import SyncService
from utils.logger import configure_logger
logger = configure_logger()
5 months ago
from config.db_config import MYSQL_CONFIG, CH_CONFIG
5 months ago
5 months ago
if __name__ == "__main__":
5 months ago
# 初始化组件
5 months ago
mysql_conn = MySQLConnector(MYSQL_CONFIG)
ch_conn = ClickHouseConnector(CH_CONFIG)
5 months ago
5 months ago
# 要处理的表名
5 months ago
tableName = 't_equipment_charge_order'
5 months ago
# 创建同步服务
service = SyncService(
5 months ago
mysql_conn=mysql_conn, ch_conn=ch_conn, mapper=DataMapper(ch_conn, tableName),
schema_path="schemas/" + tableName + ".sql"
5 months ago
)
5 months ago
5 months ago
try:
5 months ago
# 创建ClickHouse表
5 months ago
service.create_ch_table()
5 months ago
# 同步数据
5 months ago
service.sync_data(table=tableName, batch_size=5000)
5 months ago
# 结束
print("同步完成")
5 months ago
except Exception as e:
logger.error(f"同步失败: {str(e)}", exc_info=True)
finally:
5 months ago
ch_conn.disconnect()