mysql数据导出成mongodb的json
来源:互联网 发布:强力卸载软件 编辑:程序博客网 时间:2024/05/23 11:09
为了迁移数据库,将mysql的数据转换成可以插入到mongo的json格式,自己手工做了一个小功能;
废话少说–>上代码
config.py文件:
#!/usr/bin/python# -*- coding: UTF-8 -*-BaseLoop = 100000#输出json时,循环遍历的基准serverAddr = 'localhost'#服务器地址databaseName = 'tony'#数据库名字user = 'chuming'#mysql用户password = '123456'#mysql密码exportMongo = True#是否到处为可以插入mongo的格式
exportJson.py文件内容
# !/usr/bin/python # -*- coding:utf-8 -*- import json,MySQLdb import configfrom datetime import datetimetry: conn = MySQLdb.connect(config.serverAddr,config.user,config.password) cur = conn.cursor() conn.select_db(config.databaseName) print('connet to ' + config.serverAddr+' databases: '+config.databaseName)except MySQLdb.Error,msg: print "MySQL connet error %d: %s" %(msg.args[0],msg.args[1])tableName = raw_input('please input the table name which will be parse to json... :')def tableToJson(table): #获取表字段 rowItem = [] #保存所有的表字段 descsql = 'desc %s' %table cur.execute(descsql) row = cur.fetchall() for item in row: rowItem.append(item[0]) print('row',rowItem) #获取表长度 countsql = 'select count(*) from %s' %table cur.execute(countsql) # print('rowcount',cur.rowcount) tableLenght = cur.fetchone()[0]#获取表的长度 print('table count :', tableLenght) BaseLoop = config.BaseLoop#循环输出的基准长度。可以用输入的方式 start = 0 #查询表的起点位置 loopCount = tableLenght/BaseLoop#循环总次数-1 last = tableLenght%BaseLoop#最后一次的起点 loopIndex = 0 #循环指针 f = open(tableName+'.json','a+') while(loopIndex <= loopCount): start = BaseLoop*loopIndex #重新设置起点 if(loopIndex == loopCount):#相等的话则执行最后一次不满BaseLoop的遍历 BaseLoop = last #遍历剩下的全部 sql = 'select * from %s limit %d,%d' %(table,start,BaseLoop) # sql = 'select * from %s limit 0,5000' %(table) print('sql:',loopIndex,sql) cur.execute(sql) data = cur.fetchall() jsonData = [] for row in data: #遍历所有数据 result = {} # temp store one jsonObject fieldIndex = 0 for field in rowItem:#转换数据格式为json result[field] = row[fieldIndex] fieldIndex += 1 tt = json.dumps(result,ensure_ascii=False,cls=DateEncoder) # print('aaa',tt) if(config.exportMongo):#如果是导出为mongoexport json格式 f.write(tt) f.write('\n') else: jsonData.append(tt) # print('result',result) loopIndex += 1# if(not config.exportMongo): print('result') f.write(json.dumps(jsonData,ensure_ascii=False)) f.close() returnclass DateEncoder(json.JSONEncoder ): def default(self, obj): if isinstance(obj, datetime): return obj.__str__() return json.JSONEncoder.default(self, obj) if __name__ == '__main__': tableToJson(tableName) cur.close() conn.close()
过程:
1、首先需要在config文件中配置mysql服务的地址(可以是localhost和远端地址)以及用户、密码,数据库名字;
2、运行python文件: python exportJson.py;
3、根据提示输入需要到处的数据库下的表名
运行如图:
导出的结果:
链接tony的数据库,然后输入需要导出的表:permission
row表示permission表中包含的字段field
table count表示permission表中的总数据。
github地址:zhuangchuming
阅读全文
0 0
- mysql数据导出成mongodb的json
- 通过Python将MongoDB导出的json数据转换成Mysql的insert语句导入
- mongodb导出数据导入mysql
- Mongodb数据导出到json或csv
- mongodb mongoexprt 导出数据 json csv格式
- mongodb的导入导出数据
- mongoDB数据的导出导入
- mongodb数据的导入导出
- 用Python将mysql数据导出成json
- 远程从Mongodb 数据库导出数据为json文件
- mysql的数据导出
- mongodb下数据的导出和导入
- mongodb数据的导出和远程导入
- mongodb数据的导入导出,备份恢复
- mongodb各种导出导入数据的方法
- mongodb数据的导出与导入
- MongoDB 数据导出mongoexport
- MongoDB导入导出数据
- JAVA类对象的数组报错Exception in thread "main" java.lang.NullPointerException
- 检查出一个文件夹下所有文件和文件夹,并把最后修改日期为今天一天之前的删掉
- WebUploader 设置原图上传option
- FutureTask与AQS不得不说的故事
- android 视频和图片切换并进行自动轮播
- mysql数据导出成mongodb的json
- 不知道什么人这么无聊,盗号了,还删我文章
- 重复注解与类型注解
- 使用 MYSQLBINLOG 来恢复数据
- 限定条件的容器数组排序输出
- TabLayout和ViewPager实现今日头条效果
- 二叉树结点最远距离
- Shell的while命令
- fedora 25 升级更新内核后,开机出现:failed start load kernel modules 的解决;还有更新内核后maya viwePort2.0不能用的问题