同步MySQL跨库且不同shema表数据

本文介绍了在面临MySQL跨库且不同schema表数据同步需求时,如何通过shell脚本和Java jar包进行解决。在使用shell脚本过程中遇到的空格处理、空字符串、特殊字符转义及NULL时间字段等问题,最终选择使用jar包并详细说明了执行命令。
摘要由CSDN通过智能技术生成

场景:需要同步线上mysql指定表中数据到新版本开发环境的mysql库

初步计划用shell脚本同步。

#!/bin/bash

db1_host=""
db1_port="3306"
db1_username=""
db1_password=""
db1_dbname="source"

db2_host=""
db2_port="3306"
db2_username=""
db2_password=""
db2_dbname="dest"

commond1="mysql -h${db1_host} -P${db1_port} -u${db1_username} -p${db1_password} ${db1_dbname} -N"

commond2="mysql -h${db2_host} -P${db2_port} -u${db2_username} -p${db2_password} ${db2_dbname}"

tenant_field="create_time update_time charge_time expired_time delivery_time open_time tenant_code tenant_name address contacts phone_code telephone email status logo"

tenant_field2="REPLACE(IFNULL(create_time,'1970-01-01 00:00:00'),' ','##') as create_time,REPLACE(IFNULL(update_time,'1970-01-01 00:00:00'),' ','##') as update_time, REPLACE(IFNULL(charge_time,'1970-01-01 00:00:00'),' ','##') as charge_time,REPLACE(IFNULL(expired_time,'1970-01-01 00:00:00'),' ','##') as expired_time,REPLACE(IFNULL(delivery_time,'1970-01-01 00:00:00'),' ','##') as delivery_time,REPLACE(IFNULL(open_time,'1970-01-01 00:00:00'),' ','##') as open_time, tenant_code,REPLACE(tenant_name,' ','##') as tenant_name,address,contacts,phone_code,telephone,email,status,logo"

tenant_field3="create_time,update_time,charge_time,expired_time,delivery_time,open_time,tenant_code,tenant_name,address,contacts,phone_code,telephone,email,status,logo"

while read ${tenant_field}
do		
	${commond2} -e "insert into t_tenant(${tenant_field3}) values('`echo "${create_time}" | sed 's/##/ /g'`','`echo "${update_time}" | sed 's/##/ /g'`','`echo "${charge_time}" | sed 's/##/ /g'`','`echo "${expired_time}" | sed 's/##/ /g'`','`echo "${delivery_time}" | sed 's/##/ /g'`','`echo "${open_time}" | sed 's/##/ /g'`','${tenant_code}','${tenantName}','${address}','${contacts}','${phone_code}','${telephone}','${email}',${status},'${logo}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值