[bigdata-039] pysql+pymongo+py3把数据从sql 导入 到mongo的通用代码
来源:互联网 发布:java soa架构案例 编辑:程序博客网 时间:2024/05/21 09:54
#!/usr/bin/env python3#! coding:utf-8 -*-import pymysqlimport pymongodef trans_data_from_mysql_to_mongo(source_param, target_param, trans_type, where_clause, ignore_columns=[]): # 创建mysql连接 mysql_conn = pymysql.connect(host=source_param['db_host'], port=source_param['db_port'], user=source_param['db_user'], passwd=source_param['db_passwd'], db=source_param['db_database'], charset='utf8') mysql_cursor = mysql_conn.cursor() #创建mongodb连接 mongo_client = pymongo.MongoClient(target_param['db_host']) mongo_db = mongo_client[target_param['db_database']] mongo_db.authenticate(target_param['db_user'], target_param['db_passwd']) if '删除目标表重新导入' == trans_type: mongo_db.drop_collection(target_param['db_table']) mongo_table = mongo_db[target_param['db_table']] #use 目标database mysql_cursor.execute('use %s;' % source_param['db_database']) #获取源表的cloumns mysql_cursor.execute('describe %s;' %(source_param['db_table'])) mysql_ret = mysql_cursor.fetchall() mysql_columns = [i[0] for i in mysql_ret] print(mysql_columns) #获取记录数量 mysql_cursor.execute('select count(*) from %s %s' % (source_param['db_table'], where_clause)) n_records = [i[0] for i in mysql_cursor.fetchall()][0] #获取数据 mysql_cursor.execute('select * from %s %s' % (source_param['db_table'], where_clause)) mysql_ret = mysql_cursor.fetchall() to_be_insert = [] i = 0 for mysql_i in mysql_ret: x = {} for ii in range(len(mysql_columns)): if len(ignore_columns) > 0 and mysql_columns[ii] in ignore_columns: continue x[mysql_columns[ii]] = mysql_i[ii]; to_be_insert.append(x) if len(to_be_insert) == 100: mongo_table.insert_many(to_be_insert) to_be_insert = [] i += 1 print(i) if len(to_be_insert) > 0: mongo_table.insert_many(to_be_insert) return n_records
每100条记录插入一次。能删除目标表。能过滤不需要的column。返回插入记录总数。
0 0
- [bigdata-039] pysql+pymongo+py3把数据从sql 导入 到mongo的通用代码
- [bigdata-112] mongo3.x数据从一个公网导出然后再导入阿里mongo
- [bigdata-069]mysql数据迁移从自建导入到rds+代码过滤增量导入 centos6.8+pymsql+mysqldump+source
- 把 mongo DB中的数据导入到Solr中
- 如何成功把EXCEL表的数据导入到SQL数据库,代码如何编写
- 如何成功把EXCEL表的数据导入到SQL数据库,代码如何编写
- 从Excel把数据导入到MSSql2005
- 把excel数据导入到sql中
- [bigdata-032] 把json文件导入到mongodb
- 从EXCEL导入数据到SQL SERVER
- 从excel导入数据到sql
- 从EXCEL导入数据到SQL SERVER
- mongo的数据导入导出
- mongo-connector导入数据到Elasticsearch
- mongo-connector导入数据到Elasticsearch
- mongo数据导入到hive里面
- 从sqlserver2000直接把数据导入到MySQL中
- 如何从sqlserver中把表数据导入到oracle?
- IMF spark 读入文件中文编码转换处理(JAVA版本)
- The processing instruction target matching "[xX][mM][lL]" is not allowed——已解决
- 使用docker搭建gitlab
- 代码优化--死代码
- vue resource设置全局拦截器实例
- [bigdata-039] pysql+pymongo+py3把数据从sql 导入 到mongo的通用代码
- QML实现渐变侧滑效果
- [HDU1814]Peaceful Commission(2-SAT)
- 数据偏斜的处理
- UVa11054 Wine trading in Gergovia
- 面临的深度学习技术问题以及基于TensorFlow的开发实践
- Schemaless and Structureless Graph Querying-vldb2014
- C标准库学习之<errno.h> ——错误
- 2.1线性表的类型定义