mongodb 导出一条数据_将 MongoDB 导出成 csv
【摘要】
将 Mongodb 数据结构转换成结构化的数据需求,我们可利用集算器 SPL 语言来进行辅助实现。若想了解更多,请前往乾学院:将 MongoDB 导出成 csv!
来源:https://plus.google.com/+VicNgrail/posts/ebS9JUtFopw Mongodb 可以存储非结构化数据,尤其擅长存储 json 格式的数据。对于习惯于数据库表结构的用户或需要使用结构化数据的用户来说,往往希望能将非结构化的数据转换成结构化的数据,以方便后面的计算,而要将这些数据导出为标准的结构化数据经常存在一定的困难。针对这种情况,我们可以利用集算器 SPL 语言来辅助 MongoDB,方便地导出结构化数据,下面用例子说明。
Collection carInfo 的部分数据如下:
{
“_id” : ObjectId(“5518f6f8a82a704fe4216a43”),
“id” : “No1”,
“cars” : {
“name” : “Putin”,
“car” : [“porche”, “bmw”]
}
}
{
“_id” : ObjectId(“5518f745a82a704fe4216a44”),
“id” : “No2”,
“cars” : {
“name” : “jack”,
“car” : [“Toyota”, “Jetta”, “Audi”]
}
}
……
需要将其导出为CSV文件,期望的数据格式如下:
使用集算器SPL的代码如下:
A 1 =mongo_open("mongodb://localhost:27017/local?user=test&password=test") 2 =mongo_shell(A1,"carInfo.find(,{_id:0})") 3 =A2.conj((t=~,~.cars.car.new(t.id:id, t.cars.name:name, ~:car))) 4 =file("D:data.csv").export@t(A3;",") 5 >mongo_close(A1)
A1: 连接MongoDB,连接字格式为mongo://ip:port/db?arg=value&…
A2: 使用find函数从集合carInfo中取数,形成游标。过滤条件是空,取出_id之外的所有字段。
A3: 取出需要的字段,拼接合成结构化二维表,结果仍然是游标。其中~表示A2中的每个document,并对cars.car字段进行拆分成行后组成序表,函数conj表示对序表纵向合并。
A4: 将A3导出为逗号分隔的csv文件,其中@t表示导出时带列名。SPL引擎会自动管理缓存,每次从游标取一批记录到内存进行计算。
A5: 关闭MongoDB。
如果用户想自己管理每批处理的数据,也可以用下面的代码:
A B 1 =mongo_open("mongodb://localhost:27017/local?user=test&password=test") 2 =mongo_shell(A1,"carInfo.find(,{_id:0})") 3 for A2,1000 =A3.cars.car.new(A3.id:id, A3.cars.name:name, ~:car) 4 =file("D:data.csv").export@ta(B3;",") 5 >mongo_close(A1)
A3: 循环从游标读数,每次读1000条到内存。A3的作用范围是缩进的B3到B4,其间可以用A3来引用循环变量。A3中的数据如下:
B3:将本批次数据转换为结构化二维表,如下:
B4:将本批次的计算结果追加到文件中,其中@a表示数据追加。
简言之,SPL得到数据集合的游标后,将每个document按car字段拆分后组成序表,将序表合并或以追加方式保存为文件即可。显然,对于这类非结构化数据向结构化数据的转换,SPL语言的处理非常高效且简明。
mongodb 导出一条数据_将 MongoDB 导出成 csv相关推荐
- mongodb 存储过程 遍历表数据_使用MongoDB存储数据
在 Ubuntu14.04 上安装 Install MongoDB Community Edition 1. Import the public key used by the package man ...
- 导出一条数据_来自小师弟的灵魂拷问之数据泵导出丢失的那些数据量去哪了?...
在精彩刺激又些许无聊的运维生活中,有可爱呆萌的师弟师妹,也是为工作增添了一些色彩.正在午休的时候, 尚未毕业的小师弟在悄悄问小师妹,为什么数据库中查出来的数据量有100G,expdp导出的dump文件 ...
- mysql两条记录合成一条数据_踩坑记录之csv数据导入MySQL
可能采坑的操作 将excel表格转换成csv 逗号分隔,然后notepad检查文件是否是utf8编码,保存. 打开 phpMyAdmin , 选择要导入的表格,然后点击导入: 导入设置 点击执行之后, ...
- mongodb添加多条数据_分析了一万多条拼车数据,看看北上广深的各位都回哪过年...
快过年了,很多同学都踏上了返乡的路.现在交通这么发达,除了高铁飞机外,还可以搭顺风车回家.今天的这篇文章我们就来分析一下拼车数据,看看今年大家都回哪儿过年. 分析了一万多条拼车数据,看看北上广深的各位 ...
- mongodb 存储过程 遍历表数据_一个mongodb存储过程
functionProhibitNumbers(datetype,startdate,enddate,org,pageindex,pagesize) {//违规检查-数量控制 ProhibitNumb ...
- 导出excel HSSFWorkbook 只能最多导出65535条数据
HSSFWorkbook 最多导出65535条数据 /** * excel 2003版本的导出方法 支持多个sheet导出 导出的文件后缀为.xls * 由于excel2003最多 ...
- java读取百万条记录出错_如何实现导出百万条数据到EXCEL中不报OOM异常?
Java项目中使用POI导出百万条数据到Excel中,但是会出现内存溢出异常. 存在以下问题需要考虑POI导出条数限制6w+ 数据量大的话会导致内存溢出 现在的做法是每6w条数据做一次分割,创建一个新 ...
- 百万数据php7取出循环_Thinkphp5 分批批量导出百万条数据记录的Code,不用PHPEXCEL哦!...
通过phpexcel导出上万条数据,会延迟.内存溢出.程序报错,各种问题出现...届时作者放弃了phpexcel,导出小数据量还是很可行的.下面通过分批导出csv,并压缩至zip中提供下载...废话不 ...
- JAVA导出exls时报oom_如何实现导出百万条数据到EXCEL中不报OOM异常?
Java项目中使用POI导出百万条数据到Excel中,但是会出现内存溢出异常. 存在以下问题需要考虑POI导出条数限制6w+ 数据量大的话会导致内存溢出 现在的做法是每6w条数据做一次分割,创建一个新 ...
最新文章
- [WPF疑难]避免窗口最大化时遮盖任务栏
- 全方位讲解硬件防火墙的选择
- ubuntu18 安装 chrome
- php识别号码格式豹子,[转载]php新手入门之PHP常用特殊运算符号
- Kotlin之函数作为参数传递
- 【渝粤题库】广东开放大学 物业财税管理基础 形成性考核
- 红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...
- Windows域策略设置 禁止客户端上网【全域策略生效】
- 2019运输科技领域最新SCI期刊影响因子正式发布,附三年IF变化趋势!
- 用matlab如何画中国地图,利用matlab画中国地图的几种方法
- 刀塔传奇战斗系统分析
- vue设计调查问卷:换个思路解决问题
- 将磁盘分区标记为活动分区后取消
- IO_CELL里的slew rate control
- **2019年java最新手机号正则**
- 【零基础学JS -4】深入剖析script标签
- Pytorch 之修改Tensor部分值
- Scrapy IT之家评论爬虫
- 论文阅读笔记【3】:网络表示学习
- 【视频压缩】基础知识(一):一文彻底弄懂分辨率、宽高比