最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Mysql到Mongodb的数据转换程序_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 19:43:23
文档

Mysql到Mongodb的数据转换程序_MySQL

Mysql到Mongodb的数据转换程序_MySQL:以前写的Mysql到Mongodb的数据转换程序,翻了出来,在数据量不大的情况情况完全够用。# -*- coding: utf-8 -*- import sys, os import multiprocessing import logging import random import time, datetime impo
推荐度:
导读Mysql到Mongodb的数据转换程序_MySQL:以前写的Mysql到Mongodb的数据转换程序,翻了出来,在数据量不大的情况情况完全够用。# -*- coding: utf-8 -*- import sys, os import multiprocessing import logging import random import time, datetime impo

以前写的Mysql到Mongodb的数据转换程序,翻了出来,在数据量不大的情况情况完全够用。
# -*- coding: utf-8 -*-

import sys, os
import multiprocessing
import logging
import random
import time, datetime
import MySQLdb
from MySQLdb import cursors
from pymongo import MongoClient

class Config:
 tables = ['hs_card', 'hs_hero', 'hs_set', 'hs_skill', 'hs_level', 'hs_pack', 'hs_salesevent']
 #tables = ['hs_card', 'hs_hero', 'hs_set', 'hs_skill', 'hs_level']
 index = {
 'hs_card': ['name'],
 }

class Mysql2Mongo(object):
 mysql_host = '50.23.4.2'
 mysql_port = 3306
 mysql_user = "root"
 mysql_pass = "stm123"
 mysql_db = "ccg_alpha"

 mongo_host = '50.23.4.2'
 mongo_port = 27017

 conn = None
 cursor = None
 mongo = None
 mongodb = None

 def __init__(self, logger):
	self.logger = logger

	self.conn = self.getMysqlConn()
	self.cursor = self.conn.cursor()

	self.mongo = MongoClient(host=self.mongo_host, port=self.mongo_port)
	self.mongodb = self.mongo['ccg_alpha']



 def getMysqlConn(self):
 return MySQLdb.connect(host=self.mysql_host, port=self.mysql_port, user=self.mysql_user, \
 passwd=self.mysql_pass, db=self.mysql_db, cursorclass=MySQLdb.cursors.SSCursor)


 def setMongoCollectionDocument(self, table, data):
	if(isinstance(data, dict) == False):
	return False
	else:
	self.mongodb[table].insert(data)


 def getMysqlTableDesc(self, table):
	sql = """desc %s""" % (table)
	n = self.cursor.execute(sql)
	data = self.cursor.fetchall()
	keys = []
	types = []
	for row in data:
	key = str(row[0])
	if(row[1].find('int') >= 0):
	type = 1
	
	elif (row[1].find('char') >= 0):
	type = 2
	elif (row[1].find('text') >= 0):
	type = 2
	elif(row[1].find('decimal') >= 0):
	type = 3
	else:
	type = 2
	keys.append(key)
	types.append(type)
	return keys, types

 def mysql2Mongo(self, table):
 self.mongodb[table].drop()
 keys, types = self.getMysqlTableDesc(table)

 sql = """select * from %s order by id asc""" % (table)
 n = self.cursor.execute(sql)
 data = self.cursor.fetchall()
 #print table, keys, types
 for row in data:
	ret = {}
	for k, key in enumerate(keys):
	if key == 'id':
	key = '_id'
	#ret[key] = int(row[k])
	if(types[k] == 1):
	if row[k]==None:
	ret[key]= 0
	continue
	#print k, key, row
	ret[key] = int(row[k])
	elif(types[k] == 2):
	if row[k]==None:
	ret[key]= ''
	continue
	ret[key] = str(row[k])
	elif(types[k] == 3):
	if row[k]==None:
	ret[key]= ''
	continue
	ret[key] = float(row[k])
	else:
	if row[k]==None:
	ret[key]= ''
	continue
	ret[key] = str(row[k])
	#if(table== 'hs_card') or (table== 'hs_hero'):
	#ret['rand'] = random.random()
	print ret
	self.setMongoCollectionDocument(table, ret)



 def __del__(self):
	self.mongo.close()
	self.cursor.close()
	self.conn.close()

if __name__ == '__main__':
 multiprocessing.log_to_stderr()
 logger = multiprocessing.get_logger()
 logger.setLevel(logging.INFO)

 # args = sys.argv
 t1 = time.time()
 cls = Mysql2Mongo(logger)
 for tb in Config.tables:
	cls.mysql2Mongo(tb)
	
 #index 
 for t, f in Config.index.items():
 pass
 
 print time.time() - t1
 logger.info("done")

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Mysql到Mongodb的数据转换程序_MySQL

Mysql到Mongodb的数据转换程序_MySQL:以前写的Mysql到Mongodb的数据转换程序,翻了出来,在数据量不大的情况情况完全够用。# -*- coding: utf-8 -*- import sys, os import multiprocessing import logging import random import time, datetime impo
推荐度:
标签: 转换 的数据 数据
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top