etl脚本,使用insert into….on duplicate键更新表

lhcgjxsq  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(165)

我已搜索堆栈溢出以寻找可能的解决方案,但找不到解决方案。请不要标为复制品。
我正在编写一个etl脚本,以执行对mysql表的升级。
emp表有主键(id,emp\u name),现在我已经删除了列id的自动增量,因为当对现有记录有更多更新时,id号有很大的差距。
现在我想提供我自己的id值,它是连续的(通过使用表中的max(id))。我遇到了一些问题,因为max(id)+1没有插入到表中。请帮助解决此问题。

conn = mysql.connector.connect(host=url, user=uname, password=pwd, database=dbase)
cur = conn.cursor()

insertQry = "INSERT INTO emp (id, emp_name, dept, designation, address1, city, state, active_start_date, is_active) SELECT (SELECT coalesce(MAX(ID),0) + 1 FROM atlas.emp) id, tmp.emp_name, tmp.dept, tmp.designation, tmp.address1, tmp.city, tmp.state, tmp.active_start_date, tmp.is_active from EMP_STG tmp ON DUPLICATE KEY UPDATE dept=tmp.dept, designation=tmp.designation, address1=tmp.address1, city=tmp.city, state=tmp.state, active_start_date=tmp.active_start_date, is_active =tmp.is_active ;"

n = cur.execute(loadQry)
print (" CURSOR status :", n)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题