将数据库中指定的用户数据迁移到另外一个库?

mysql 5.5 ,将数据库中指定的用户数据迁移到另外一个库,不保留主键,并更新关联主键字段。如:article 表的id迁移到新库的时候是重新生成的自增id,同时需要更新article_item表中的article_id为新的记录。大概有80张表,有什么比较好比较便捷的方法吗?

阅读 1.5k
1 个回答

1.先备份原始数据
2.用python脚本来实现:

import pymysql

# 连接到原始数据库和新数据库
src_conn = pymysql.connect(host='src_host', user='src_user', password='src_password', db='src_db')
dst_conn = pymysql.connect(host='dst_host', user='dst_user', password='dst_password', db='dst_db')

# 获取原始数据
src_cursor = src_conn.cursor()
src_cursor.execute("SELECT field1, field2, field3 FROM src_table")
data = src_cursor.fetchall()

# 插入数据到新数据库并记录新旧主键映射关系
dst_cursor = dst_conn.cursor()
id_mapping = {}
for row in data:
    dst_cursor.execute("INSERT INTO dst_table (field1, field2, field3) VALUES (%s, %s, %s)", row)
    new_id = dst_cursor.lastrowid
    old_id = row[0]  # 假设 field1 是原始主键
    id_mapping[old_id] = new_id

# 更新关联字段
for old_id, new_id in id_mapping.items():
    dst_cursor.execute("UPDATE related_table SET related_field = %s WHERE related_field = %s", (new_id, old_id))

# 提交更改并关闭连接
dst_conn.commit()
src_conn.close()
dst_conn.close()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题