达梦增量推送数据到mysql(增量)

import mysql

print('=================================\033[0:32m数据库dm到mysql之间全部表同步脚本开始执行\033[m====================================================')
import jaydebeapi
import time

from datetime import date,datetime
with open('D:\work\insertLog.txt', 'a') as file:
    print(('=================================\033[0:32m数据库dm到mysql之间全部表同步脚本开始执行\033[m===================================================='),file=file)
start_time = time.time()  # 记录开始时间
source_mode='Q_NSQRLZYHSHBZJ'
target_end_mode='sjgx'
url = f'jdbc:dm://ip:5236/{source_mode}'
user = 'username'
password = password'
dirver = 'dm.jdbc.driver.DmDriver'
jarFile = ['D:\software\dbeaver\JAVA_Mybatis\lib\DmJdbcDriver18.jar','D:\software\dbeaver\JAVA_Mybatis\lib\mysql-connector-j-8.3.0.jar']



urls = f'jdbc:mysql://ip:25337/{target_end_mode}?user=your_username&password=your_password&useSSL=false&serverTimezone=UTC'
users = 'username'
passwords = 'password'

dirvers='com.mysql.cj.jdbc.Driver'





dm_conn =jaydebeapi.connect(dirver, url, [user, password], jarFile)
dm_cursor = dm_conn.cursor()
mysql_conn=jaydebeapi.connect(dirvers, urls, [users, passwords], jarFile)
mysql_source_cursor=mysql_conn.cursor()

#获取mysql库表最大时间值
try:
    mysql_source_cursor.execute('select max(S_LAST_UPDATED) FROM ex_339_smzgrkqxx')
    tables = mysql_source_cursor.fetchall()
    #print(tables[0][0])
    if tables[0][0] is not None:
        sql_dm=f'''select * from Q_NSQRLZYHSHBZJ.EX_339_SMZGRKQXX WHERE S_LAST_UPDATED >'{tables[0][0]}' '''
        dm_cursor.execute(sql_dm)
        result=dm_cursor.fetchall()
        #print('0000000000000000')
        #print(len(result))
        for i in result:
            #print(i)
            #print(len(i))
            insert_sql_mysql='insert into ex_339_smzgrkqxx(S_GUID ,S_CREATION_TIME ,S_LAST_UPDATED ,S_STATUS ,S_TRANS_STATUS ,S_ROUTE_STATUS ,S_SRC_NODE ,S_DEST_NODE ,S_BATCH_NO ,ID ,CODE,NAME,AREA_NAME ,JSQY_NAME,COMPETENT_DEPARTMENT,ENTERPRISE_NAME,TEAM_NAME,WORKER_NAME,CARD_NUM,TYPE,WORK_DATE ,WORK_START,WORK_END ,WORK_HOURS,UPLOAD_DATE,data_src ,dt ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'

            mysql_source_cursor.execute(insert_sql_mysql,i)
            #logger.info(f'当前日期:{date.today()},插入数据:{len(result)}条,更新日期:{tables[0][0]}')
            # with open('D:\work\insertLog.txt', 'a') as file:
            #     print(f'当前日期:{date.today()},插入数据:{len(result)}条,更新日期:{tables[0][0]}',file=file)
    else:
        sql_dm_full = f'select * from Q_NSQRLZYHSHBZJ.EX_339_SMZGRKQXX'
        dm_cursor.execute(sql_dm_full)
        result_full = dm_cursor.fetchall()

        print(len(result_full))

        insert_sql_mysql_full='insert into ex_jianwei_339_smzgrkqxx(S_GUID ,S_CREATION_TIME ,S_LAST_UPDATED ,S_STATUS ,S_TRANS_STATUS ,S_ROUTE_STATUS ,S_SRC_NODE ,S_DEST_NODE ,S_BATCH_NO ,ID ,CODE,NAME,AREA_NAME ,JSQY_NAME,COMPETENT_DEPARTMENT,ENTERPRISE_NAME,TEAM_NAME,WORKER_NAME,CARD_NUM,TYPE,WORK_DATE ,WORK_START,WORK_END ,WORK_HOURS,UPLOAD_DATE,data_src ,dt ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'

        mysql_source_cursor.executemany(insert_sql_mysql_full, result_full)
        #mysql_conn.commit()
except Exception as err:
    print("Error: {}".format(err))
finally:
    mysql_source_cursor.close()
    mysql_conn.close()
end_time = time.time()  # 记录结束时间
execution_time = end_time - start_time  # 计算执行时长
today = date.today()

now = datetime.now()

# 分别提取年、月、日、小时、分钟和秒
current_year = now.year
current_month = now.month
current_day = now.day
current_hour = now.hour
current_minute = now.minute
current_second = now.second
def convert_seconds(seconds):
    days = seconds // (24 * 3600)
    seconds %= (24 * 3600)
    hours = seconds // 3600
    seconds %= 3600
    minutes = seconds // 60
    seconds %= 60
    return f"{days}天 {hours}小时 {minutes}分钟 {seconds}秒"
with open('D:\work\insertLog.txt', 'a') as file:
   print(f"当前日期:{today},脚本执行时长:{convert_seconds(int(execution_time))},上次增量更新截止时间:{tables[0][0]},本次总共增量插入{len(result)}条数据",file=file)
   print(f'=================================脚本执行结束,当前时间为: {current_year}-{current_month:02d}-{current_day:02d} {current_hour:02d}:{current_minute:02d}:{current_second:02d}====================================================',file=file)
   #print(f"当前时间为: {current_year}-{current_month:02d}-{current_day:02d} {current_hour:02d}:{current_minute:02d}:{current_second:02d}",file=file)
#print(f"当前日期:{today},脚本执行时长:{convert_seconds(int(execution_time))},上次增量更新截止时间:{tables[0][0]},本次总共增量插入{len(result)}条数据")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值