使用pandas把mysql的数据导入MongoDB。
使用pandas把mysql的数据导入MongoDB。
首先说下我的需求,我需要把mysql的70万条数据导入到mongodb并去重,
同时在第二列加入一个url字段,字段的值和第三列的值一样,代码如下:
# -*- coding: utf-8 -*-
# @Time : 2018/9/29 17:20
# @Author : cxa
# @File : run.py
# @Software: PyCharm
import pandas as pd
from sqlalchemy import create_engine
from pymongo import MongoClient
import json
import time
class MongoBase:
def __init__(self, collection):
self.collection = collection
self.OpenDB()
def read_mysql(self):
engine = create_engine(
'mysql+pymysql://usernmae:passwd@ip:port/dbname?charset=utf8') # 用sqlalchemy创建引擎
start=time.time()
max_id=self.get_max_id()
df1 = pd.read_sql(f'select primary_key,phone,plat_code,crawl_time,jrjt_del_dt from test_info where primary_key>{max_id}', engine) # 从数据库中读取表存为DataFrame
end = time.time()
print("查询完毕条数",len(df1['phone']),"用时",end-start)
df1.drop_duplicates('phone', keep='first', inplace=True)
df1.insert(1, 'url', df1['phone'])
return df1
def OpenDB(self):
self.con = MongoClient(host=host)
self.db = self.con[self.collection]
self.collection = self.db['test']
def closeDB(self):
self.con.close()
def get_max_id(self):
max_id = self.collection.find().sort([('primary_key', -1)]).limit(1)[0]
if max_id:
return max_id.get("primary_key")
if __name__ == '__main__':
start=time.time()
mongo = MongoBase('spider_data')
df =mongo.read_mysql()
mongo.collection.insert(json.loads(df.T.to_json()).values())
mongo.closeDB()
end=time.time()
print("运行完成所用时",end-start)
使用pandas把mysql的数据导入MongoDB。的更多相关文章
- 小白学 Python 数据分析(7):Pandas (六)数据导入
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- mysql的数据导入导出
1.Navicat for Mysql XML导出导入格式支持二进制数据:虽然同步数据人眼看不出区别,但是java尝试读取数据时,报datetime字段取出的值为“0000-00-00 00:00:0 ...
- MySQL之数据导入导出
日常开发中,经常会涉及到对于数据库中数据的导入与导出操作,格式也有很多: TXT,CSV,XLS,SQL等格式,所以,在此总结一下,省的总是百度查询. 一 导出 1) 常用的方式就是使用现成的工具例如 ...
- Mysql 大量数据导入
今天试图用heidisql 导入一个150M的数据文件(.sql), 结果报out of memory 错误.在网上搜了很多案例,都没能解决问题.我甚至怀疑是mysql 的default的内存设置的太 ...
- 用sqoop将mysql的数据导入到hive表中
1:先将mysql一张表的数据用sqoop导入到hdfs中 准备一张表 需求 将 bbs_product 表中的前100条数据导 导出来 只要id brand_id和 name 这3个字段 数据存 ...
- 通过管道传输快速将MySQL的数据导入Redis
通过管道传输pipe将MySQL数据批量导入Redis 自Redis 2.6以上版本起,Redis支持快速大批量导入数据,即官网的Redis Mass Insertion,即Pipe传输, ...
- solr 4.8+mysql数据库数据导入 + mmseg4j中文全文索引 配置笔记
转载请标明出处:http://www.cnblogs.com/chlde/p/3768733.html 1.如何将solr部署,请参考之前的文章 2.按上述配置好后,在solr_home文件夹中,将包 ...
- MySQL多线程数据导入导出工具Mydumper
http://afei2.sinaapp.com/?p=456 今天在线上使用mysqldump将数据表从一个库导入到另外一个库,结果速度特别慢,印象中有个多线程的数据导入导出工具Mydumper,于 ...
- MySQL示例数据导入
从官网下载示例数据,参考压缩文件中的README.txt,整理所得 /******************* 示例数据导入 *******************/ /** 官网下载 http://d ...
随机推荐
- P4101 [HEOI2014]人人尽说江南好
题目描述 小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家),最近他 想起了小时候在江南玩过的一个游戏. 在过去,人们是要边玩游戏边填词的,比如这 ...
- Day24-part1-原生Ajax
参考老师博客:http://www.cnblogs.com/wupeiqi/articles/5703697.html 主要讲了:发数据的3种方式以及上传文件的3种方式.(后续需要总结) 一,原生Aj ...
- 【2018ICPC沈阳】
哈密顿距离转切比雪夫距离,多种颜色跟两种颜色没有区别,记录最大最小次大次小即可. 圆求交点.
- 【bzoj4520】 Cqoi2016—K远点对
http://www.lydsy.com/JudgeOnline/problem.php?id=4520 (题目链接) 题意 求平面内第K远点对的距离. Solution 左转题解:jump 细节 刚 ...
- FourAndSix: 2.01靶机入侵
0x01 前言 FourAndSix2是易受攻击的一个靶机,主要任务是通过入侵进入到目标靶机系统然后提权,并在root目录中并读取flag.tx信息 FourAndSix2.镜像下载地址: htt ...
- 20135239 益西拉姆 linux内核分析 可执行程序的装载
益西拉姆 + 原创作品请勿转载 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” week 7 可 ...
- Git 常用操作(二)
第一次传数据:echo "# miya" >> README.mdgit initgit add README.mdgit commit -m "first ...
- Codeforces Educational Round 57
这场出题人好像特别喜欢998244353,每个题里都放一个 A.Find Divisible 考察选手对输入输出的掌握 输出l 2*l即可(为啥你要放这个题,凑字数吗 #include<cstd ...
- C++实现两个大整数的相加(考虑到负数异常情况)
实现两个大整数的相加,首先应该排除直接使用int和long long的方法,这些方法很容易溢出,这里为了方便(是否可以使用更精简的结构存储?)采用char来存储整数,整体思路如下: 1. 对于整数n和 ...
- linux环境下安装PHP扩展swoole
swoole linux环境下的安装 最近在折腾一个伪直播页面,需求中有用到评论 开始在想直接ajax直接实现,不过想了想觉得对数据库读写太过频繁 而且对服务器压力也挺大的 百度一番发现了这么个东西 ...