用户公司需要数据库迁移,迁移量不小.本着一贯能偷懒就偷懒的原则,想着网上应该能有批量迁移的方法,实在没有找到!
前边都是瞎扯,说正题:
1,迁移数据量比较大,
2,数据还算工整(理论上不工整也问题不大,但是select 时需要操作一下,让取出和你要保存的字段一致)
好了代码如下, 取数据:
sql = "select * from 表 limit{},200000".format(n)
cur = conn.cursor()
cur.execute(sql)
data = cur.fetchall()
此时取出来的时元祖套元祖, ((),(),()),保存数据库代码:
data = list(data)
sql = "insert into 表 VALUES {}".format(data)
cur = conn.cursor()
sql = re.sub('\[\(', '(', sql)
sql = re.sub('\)\]', ')', sql)
try:
print('将要保存')
cur.execute(sql)
conn.commit()
print('保存完成')
except Exception as e:
print('失败:')
print(e)
我太懒了,格式不修改了就这样吧,说一下思路,直接把数据放入 "insert into 表,"这个字符串中,格式变成了
"insert into 表 values [(),(),()]"
但是mysql 批量插入是"insert into 表 values (),(),()" 这样的格式,现在只需要将两边的[]去掉就好了,我为什么要将元祖变成列表?因为我内部数据用元祖的话,最后去括号时候麻烦!
用这个方法的话,不用一条一条插入,也不用也不用逐条判断了
VALUES