java往MongDB导入大量数据
好几月没写博客了~~~
---------------------
在公司最近在搞用java往MongDB导入数据 现在是我刚导入2000W条数据了 所以就先写上吧,废话也不多说了
MongDB 我本机上没有 我往服务器里面的MongDB导入的 只有URL链接
首先是导入 我是不是用的批量导入 用的是单条导入 比较快
void testPost(String urlStr) {
try {
URL url = new URL(urlStr);
URLConnection con = url.openConnection();
con.setDoOutput(true);
con.setRequestProperty("Pragma:", "no-cache");
con.setRequestProperty("Cache-Control", "no-cache");
con.setRequestProperty("Content-Type", "text/xml");
//实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("这里写IP地址你需要从哪个IP里读取数据的IP地址", 27017);
//连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongo.getDB("yourdb"); // Get collection from MongoDB, database named "yourDB"
//从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection collection = db.getCollection("dl_hotelimage");
OutputStreamWriter out = new OutputStreamWriter(con
.getOutputStream());
String xmlInfo = getXmlInfo();
out.write(new String(xmlInfo.getBytes("UTF-8")));
out.flush();
out.close();
BufferedReader br = new BufferedReader(new InputStreamReader(con
.getInputStream()));
String line = "";
int i =1;
BasicDBObject document=new BasicDBObject();
for (line = br.readLine(); line != null; line = br.readLine()) {
String[] str=line.split("\\|",-1);
document = new BasicDBObject();
if(str.length!=0){
document.put("id", str[0]);
}
if(str.length!=1){
document.put("ImageCaption", str[1]);
}
if(str.length!=2){
document.put("ImageUrl", str[2]);
}
if(str.length!=3){
document.put("ImageOrder", str[3]);
}
collection.save(document);
//BasicDBObject searchQuery = new BasicDBObject();
//searchQuery.put("id", str[0]);
// 使用collection的find方法查找document
//DBCursor cursor = collection.find(searchQuery);
//循环输出结果
System.out.println(i+++"条-----"+collection.count());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//XML文件的配置 其实不用XML文件的
private String getXmlInfo() {
StringBuilder sb = new StringBuilder();
sb.append("<GetStaticInformationRQ>");
sb.append("<Header>");
sb.append("<ClientID>BJMAIGESHI_API</ClientID>");
sb.append("<LicenseKey>BJMAIGESHI_API</LicenseKey>");
sb.append("</Header>");
sb.append("<StaticType>这里需要你写你要导入哪些数据的型号英文</StaticType>");
sb.append("</GetStaticInformationRQ>");
return sb.toString();
} public static void main(String[] args) {
String url = "这里就是你的URL链接地址了需要从这个URL里读取数据";
new HttpPostTest().testPost(url);
}
导入
这个是我已经导入的数据 目前还在导入
附赠你们一个查询
void testPost(String urlStr) {
try {
URL url = new URL(urlStr);
URLConnection con = url.openConnection();
con.setDoOutput(true);
con.setRequestProperty("Pragma:", "no-cache");
con.setRequestProperty("Cache-Control", "no-cache");
con.setRequestProperty("Content-Type", "text/xml"); OutputStreamWriter out = new OutputStreamWriter(con
.getOutputStream());
String xmlInfo = getXmlInfo();
out.write(new String(xmlInfo.getBytes("ISO-8859-1")));
out.flush();
out.close();
BufferedReader br = new BufferedReader(new InputStreamReader(con
.getInputStream()));
String line = "";
int i=0;
for (line = br.readLine(); line != null; line = br.readLine()) {
String str[]=line.split("\\|+");
System.out.println(i+++"条----"+line);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} private String getXmlInfo() {
StringBuilder sb = new StringBuilder();
sb.append("<GetStaticInformationRQ>");
sb.append("<Header>");
sb.append("<ClientID>BJMAIGESHI_API</ClientID>");
sb.append("<LicenseKey>BJMAIGESHI_API</LicenseKey>");
sb.append("</Header>");
sb.append("<StaticType>HotelImage</StaticType>");
sb.append("</GetStaticInformationRQ>");
return sb.toString();
} public static void main(String[] args) {
String url = "URL链接地址 你查询的";
new HttpPostTest().testPost(url);
}
查询
在附赠一个查询数据库
public static void main(String[] args) {
try {
//实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("导入的IP地址", 27017);
//连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongo.getDB("yourdb"); // Get collection from MongoDB, database named "yourDB"
//从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection collection = db.getCollection("dl_hotelimage");
// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。 // 创建要查询的document
BasicDBObject searchQuery = new BasicDBObject();
// 使用collection的find方法查找document
DBCursor cursor = collection.find(searchQuery);
//循环输出结果
int i=0;
while (cursor.hasNext()) {
System.out.println(i+++","+cursor.next());
}
System.out.println("Done");
} catch (MongoException e) {
e.printStackTrace();
} }
查询数据库
好了 我本机上没有安装MongDB数据库用的IP地址和URL链接呢
java往MongDB导入大量数据的更多相关文章
- java 跨数据库导入大数据
java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ...
- [Java] 高效快速导入EXCEL数据
需求1.高效率的以excel表格的方式导入多条数据.2.以身份证号为唯一标识,如果身份证号已存在,则该条数据不导入. 分析刚开始的时候是传统的做法,解析excel数据,获取单个对象,判断身份证是否已存 ...
- java 使用poi 导入Excel 数据到数据库
由于我个人电脑装的Excel是2016版本的,所以这地方我使用了XSSF 方式导入 . 1先手要制定一个Excel 模板 把模板放入javaWeb工程的某一个目录下如图: 2模板建好了后,先实现模板下 ...
- java调用sqlldr导入csv文件数据到临时表
package cn.com.file;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File; ...
- Java利用POI导入导出Excel中的数据
首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...
- java 使用POI批量导入excel数据
一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...
- JAVA通过poi对Excel数据在(jsp+ssh)环境下导入导出
POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bin-2.5.1-final-20040 ...
- java小技巧:如何分批次导入大量数据
//List 需要导入的数据int count = 1000;//每批次导入的数目int Lastindex = count;List<List<T>> shareList = ...
- Oracle如何导入导出数据(转自)
导出:exp ssht/taxware@sshtfile=d:\ssht.dmpexp 用户名/密码@服务名导入:imp ssht/taxware@mysshtfile=d:\ssht.dmp fro ...
随机推荐
- 无法添加注解@Resource
Spring项目中缺少javax.annotation包的依赖
- C语言多种方法求解字符串编辑距离问题的代码
把做工程过程经常用的内容记录起来,如下内容段是关于C语言多种方法求解字符串编辑距离问题的内容. { if(xbeg > xend) { if(ybeg > yend) return 0; ...
- k个一组翻转链表(java实现)
题目: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序. 示例 : 给定这 ...
- samtools 使用简述
功能如下: 1.View 主要功能讲sam文件转位bam文件. 涉及的参数: -b 输出bam格式..默认是sam文件 -h 输出的sam文件带header..默认不带 -H 仅仅输出header - ...
- label 的for属性总结
一.使用介绍 1. 定义:for属性规定label与哪个表单元素绑定. <label>是专门为<input>元素服务的,为其定义标记. label 和表单控件绑定方式有两种: ...
- Android测试(三)——burpsuite抓包设置
导出证书: 将证书导入模拟器中: 设置监听端口,透明代理(一定要设置这个): 进入adb shell,输入如下命令,即可抓包了: iptables -t nat -A OUTPUT -p tcp - ...
- git reset 和 git revert 使用区别
git reset 用于回退代码,但是git pull后会和远程分支保持一致,所以无法修改远程代码 git revert可以撤销代码,撤销后直接git push ,可以修改远程分支的代码
- AOP之配置文件实现
看了http://www.cnblogs.com/xrq730/p/4919025.html这篇文章之后自己跟着做了一遍,有需要可以去看原文,比我写的更详细. AOP AOP(Aspect Orien ...
- oracle 夸服务器、数据库查询
create public database link 连接名 connect to 需要连接数据库名 identified by 需要连接数据库密码 USING '(DESCRIPTION = ...
- 在OAF页面中集成ECharts以及highcharts用于显示图表
历史博文中有讲解在请求中输出基础图表的方式,见地址:EBS 请求输出Html报表集成Echarts 本文讲述在OAF中集成这两类图表. 集成的基本思路:在OAF页面中加入一个rawText组件,在ra ...