通过Python将MongoDB导出的json数据转换成Mysql的insert语句导入
来源:互联网 发布:中建八局 知乎 编辑:程序博客网 时间:2024/05/11 12:29
MongoDB数据导出
首先,MongoDB的数据导出仅支持Json及csv格式,无法直接导入可执行的Mysql数据库脚本。
所以,要完全将MongoDB的数据导入到Mysql可以通过先导出成Json再使用Python将数据转换成SQL脚本。
注:由于Python要自己写,且表名字段名啥的只能固定写死,所以该方法仅在将单张表中的数据导入MySql有效,批量多表导入建议采用其他方法。
至于怎么导出成Json,一般可以直接通过命令行或者通过Mongochef等客户端程序导出。
我导出的Json示例:
{ "_id" :"55a0dfe539aeef2bd79b38f6", "username" : "巴蒂斯图塔", "patientno" : "000000761"}{ "_id" :"55a1033439aeef4bd194f888", "username" : "周杰伦", "patientno" : "000000770"}{ "_id" :"55a32d4839aeef4bd194f889", "username" : "测试", "patientno" : "000000771"}{ "_id" :"55a3623f39aeef4bd194f88a", "username" : "测试2", "patientno" : "000000772"}
</pre><pre name="code" class="python">Python数据转换
通过Python将json转出sql脚本,首先你得有Python的环境,我的示例代码是Python 2.7的,3.0+的语法不同,请注意。
1.将上述json数据存入 mongo.json 文件中
2.编写Python脚本:
<pre name="code" class="python">import sysreload(sys)sys.setdefaultencoding('gbk')import jsondata = []with open('mongo.json') as f: for line in f: line.encode("gbk"); data.append(json.loads(line,encoding="gbk"))#print json.dumps(data, ensure_ascii=False)str = "\r\n"for item in data: #print json.dumps(item) str = str + "insert into t_ecg_report_dynamic(id,username) values " str = str + "('%s','%s');\r\n" % (item['_id'],item['username'])import codecsfile_object = codecs.open('tencent.sql', 'w' ,"gbk")file_object.write(str)file_object.close()print "success"
注意,由于json中有中文,如果采用gbk uft-8都会出现编码格式问题
错误包括:
(1)UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 51: ordinal
这个错误一般是因为Python默认编码是ascii的,可以在脚本里加上这几句,将默认编码改成你需要的
import sysreload(sys)sys.setdefaultencoding('gbk')(2)
E:\>python py2.py
Traceback (most recent call last):
File "py2.py", line 9, in <module>
data.append(json.loads(line))
File "E:\Python27\lib\json\__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "E:\Python27\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "E:\Python27\lib\json\decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 0: invalid s
tart byte
这一类报错,是因为文件本身是utf-8编码的,运行时候无法识别出文件中的中文字符,加上强制编码修改就行了,注意好像只有gbk才支持中文,utf8好像不行
data.append(json.loads(line,encoding="gbk"))
(3) 最后成功生成insert语句
insert into t_ecg_report_dynamic(id,username) values ('55a0dfe539aeef2bd79b38f6','巴蒂斯图塔');
insert into t_ecg_report_dynamic(id,username) values ('55a1033439aeef4bd194f888','周杰伦');
insert into t_ecg_report_dynamic(id,username) values ('55a32d4839aeef4bd194f889','测试');
insert into t_ecg_report_dynamic(id,username) values ('55a3623f39aeef4bd194f88a','测试2');
insert into t_ecg_report_dynamic(id,username) values ('55a1033439aeef4bd194f888','周杰伦');
insert into t_ecg_report_dynamic(id,username) values ('55a32d4839aeef4bd194f889','测试');
insert into t_ecg_report_dynamic(id,username) values ('55a3623f39aeef4bd194f88a','测试2');
0 0
- 通过Python将MongoDB导出的json数据转换成Mysql的insert语句导入
- python将json格式数据转换为insert into语句导入mysql数据库
- mysql数据导出成mongodb的json
- 将数据库数据导出成insert语句的存储过程
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
- python将mysql数据库的数据转换为json数据
- sqlserver 中 将数据 导出为 insert语句 的Proc
- 根据MySQL表数据导出INSERT INTO语句的方法
- 如何将Oracle导出的数据导入MongoDB
- mongodb的导入导出数据
- mongoDB数据的导出导入
- mongodb数据的导入导出
- 把某个表的数据导出成insert语句(数据导出 insert语句)
- 用Python将mysql数据导出成json
- python将excel的数据导入mysql
- 将Excel表格的数据转换成sql的insert语句
- 使用navicat for mysql 将查询语句过滤的结果导出成insert语句时没有带表名的解决办法
- Hadoop---HBase伪分布安装
- Oracle数据库当前的nls_date_format参数值查询及设置
- P2P实时音视频之NAT穿越
- 如何更有效地学习开源项目的代码?(知乎)
- 有关 给Layout设置监听事件后,与Layout子控件的响应关系
- 通过Python将MongoDB导出的json数据转换成Mysql的insert语句导入
- C++堆和栈的分配
- 图像特征提取总结
- git 学习笔记4
- AutoLayout框架Masonry使用心得
- 超实用的JavaScript代码段 Item1 --倒计时效果
- eclipse编写的GBK项目转变成UTF-8编码
- Centos磁盘挂载操作
- [2012]:素数判定