当前位置:   article > 正文

mysql往mongodb迁移数据

mysql数据迁移到mongodb

业务场景:需要将一个客户的所有沟通记录添加到一个客户中去,但是不知道客户被沟通的次数,导致不知道应该添加多少字段,mysql扩展性差,不能满足这个需求。mongodb作为文档型数据库,可以随意增删字段,在这方面的优势比较突出。下面是用python 将MYSQL存储到MONGODB的一个简单例子。

使用工具版本如下:

python 3.7

MONGODB3.4

MYSQL 5.5

  1. # 导入pymysql,pymongo的包
  2. import pymysql;
  3. import pymongo;
  4. class Connect:
  5. def mysqlCon(self,host,user,passwd,db,port,charset):
  6. # MYSQL连接,获取一个数据库连接,注意如果是UTF-8类型的,需要指定数据库
  7. conn = pymysql.connect(host=host, user=user, passwd=passwd, db=db, port=port, charset=charset);
  8. # 获取一个游标
  9. cur = conn.cursor();
  10. return conn,cur;
  11. def mongoCon(self,host,port):
  12. # MONGODB连接
  13. mongoclient=pymongo.MongoClient("localhost", port=27017);
  14. # 获取mongodb集合
  15. collection = mongoclient.mydb.communication_log;
  16. return mongoclient,collection;
  17. try:
  18. connect = Connect();
  19. conn, cur = connect.mysqlCon(host='192.168.1.200', user='fang_read', passwd='read2wsx', db='fangdb', port=3307,charset='utf8');
  20. cur.execute('select customer_id,create_user_id,content,create_time from crm_communication_log a order by create_time desc limit 100000');
  21. data = cur.fetchall();
  22. mongoclient, collection = connect.mongoCon("localhost", port=27017);
  23. # 根据customer_id字段,将同一个客户的沟通记录放在了一个set内嵌文档中
  24. for d in data:
  25. collection.update_many({"customer_id": d[0]},
  26. {"$addToSet": {"log": {"create_user_id": d[1], "content": d[2], "create_time": d[3]}}},
  27. upsert=True);
  28. cur.close();
  29. conn.close();
  30. mongoclient.close();
  31. except Exception as e:
  32. print(e);

这里将mysql迁移到mongodb使用python主要是为了实现将同一个客户的沟通记录放在一个内嵌文档中的目的。此次迁移有10万的数据量,大概耗时40分钟,时间还是很久的,以后有好的解决方案还会继续更新。

如果只是简单的迁移,还有很多其他更简单的方法可以使用,这里就不再详述。

 

转载于:https://my.oschina.net/u/4010291/blog/2962130

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/675584
推荐阅读
相关标签
  

闽ICP备14008679号