java 代码处理excle到mongodb

package com.pistonint.nlp.module.test;




import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.bson.Document;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class test {

    public static String tagFile = "C:\\Users\\admin\\Desktop\\data_final_20210301_3.xlsx";
    public static InputStream in;
    public static XSSFWorkbook srcExcel;

    static {
        try {
            in = new FileInputStream(tagFile);
            srcExcel = new XSSFWorkbook(in);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static XSSFSheet sheet = srcExcel.getSheet("Sheet1");
    public static List<String> titleList = Arrays.asList(
            "id",
            "location",
            "school",
            "class",
            "sex",
            "netWords",
            "copyScore",
            "theme",
            "solveProblem",
            "job",
            "wish",
            "emotion1",
            "emotion2",
            "emotion3",
            "invent",
            "inventScore"
    );

    public static void main(String[] args) {
        HashMap dbPara = new HashMap();
        dbPara.put("etlip", "192.168.1.98");
        dbPara.put("etlport", Integer.valueOf("27017"));
        dbPara.put("etluserName", "yckPricing_rw");
        dbPara.put("etlauthDBName", "yckPricing");
        dbPara.put("etlpwd", "Xvd2YKOpYK9MeZQL");
        dbPara.put("etlusedb", "yckPricing");


        MongoDBUtil util = new MongoDBUtil();

        MongoClient etlMongoClient = util.getMongoClient(
                dbPara.get("etlip").toString(),
                Integer.parseInt(dbPara.get("etlport").toString()),
                dbPara.get("etluserName").toString(),
                dbPara.get("etlauthDBName").toString(),
                dbPara.get("etlpwd").toString()
        );
        MongoDatabase newcarDB = etlMongoClient.getDatabase(dbPara.get("etlusedb").toString());
        MongoCollection coll = newcarDB.getCollection("nlp"); // 标准表 //mix_standard

        coll.drop();
        ArrayList<Document> doclist = new ArrayList<>();
        for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
            Document document = new Document();
            XSSFRow row = sheet.getRow(rowNum);
            if (row == null) {
                continue;
            }
            short lastCellNum = row.getLastCellNum();

            for (int col = row.getFirstCellNum(); col < lastCellNum; col++) {
                XSSFCell cell = row.getCell(col);//col对应的列值
                XSSFCell cellHead = sheet.getRow(0).getCell(col);

                String cellV = null;
                if (cell != null) {
                    cellV = cell.toString();
                }

                if ("id".equals(cellHead.toString())) {
                    document.append("_id",cellV);

                }


                if ("theme".equals(cellHead.toString())) {
                    List<String> topicsList = null;
                    String s = cellV;
                    if (s != null) {
                        String[] split = s.split(",");
                        for (int i = 0; i < split.length; i++) {
                            split[i] = split[i].trim();
                        }
                        topicsList = Arrays.asList(split);
                    }
                    document.append("theme", topicsList);
                } else if ("solveProblem".equals(cellHead.toString())) {
                    List<String> topicsList = null;
                    String s = cellV;
                    if (s != null) {
                        String[] split = s.split(",");
                        for (int i = 0; i < split.length; i++) {
                            split[i] = split[i].trim();
                        }
                        topicsList = Arrays.asList(split);
                    }
                    document.append("solveProblem", topicsList);
                } else if ("job".equals(cellHead.toString())) {
                    List<String> topicsList = null;
                    String s = cellV;
                    if (s != null) {
                        String[] split = s.split(",");
                        for (int i = 0; i < split.length; i++) {
                            split[i] = "".equals(split[i].trim()) ? null : split[i].trim();
                        }
                        topicsList = Arrays.asList(split);
                    }
                    document.append("job", topicsList);
                } else if ("wish".equals(cellHead.toString())) {
                    List<String> topicsList = null;
                    String s = cellV;
                    if (s != null) {
                        s = s.replaceAll("^\\(", "")
                                .replaceAll("\\)$", "");
                        String[] split = s.split(",");
                        for (int i = 0; i < split.length; i++) {
                            split[i] = "".equals(split[i].trim()) ? null : split[i].trim();
                        }
                        topicsList = Arrays.asList(split);
                    }
                    document.append("wish", topicsList);
                } else if ("invent".equals(cellHead.toString())) {
                    List<String> topicsList = null;
                    String s = cellV;
                    if (s != null) {
                        String[] split = s.split(",");
                        for (int i = 0; i < split.length; i++) {
                            split[i] = split[i].trim();
                        }
                        topicsList = Arrays.asList(split);
                    }
                    document.append("invent", topicsList);
                } else if ("inventScore".equals(cellHead.toString())) {
                    List<String> topicsList = null;
                    String s = cellV;
                    if (s != null) {
                        String[] split = s.split(",");
                        for (int i = 0; i < split.length; i++) {
                             split[i] = split[i].trim();
                        }
                        topicsList = Arrays.asList(split);
                    }
                    document.append("inventScore", topicsList);
                } else {
                    document.append(cellHead.toString(), cellV);
                }


            }
            document.remove("id");
            System.out.println(document);
            doclist.add(document);

        }

        coll.insertMany(doclist);

        if (etlMongoClient!=null) {
            etlMongoClient.close();
        }
    }
}


package com.pistonint.nlp.module.test;

import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.UpdateOptions;
import org.bson.Document;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MongoDBUtil {

	private final static MongoClientOptions MONGO_CLIENT_OPTIONS = new MongoClientOptions.Builder()
			.cursorFinalizerEnabled(true)
			.writeConcern(WriteConcern.ACKNOWLEDGED)
			// Default is WriteConcern.NORMAL
			.readPreference(ReadPreference.secondaryPreferred())
			.connectionsPerHost(100)
			// Default is 100
			.minConnectionsPerHost(5)
			.threadsAllowedToBlockForConnectionMultiplier(10)
			// Default is 5
			.maxWaitTime(120000)
			// Default is 120000
			.socketKeepAlive(true).socketTimeout(0).connectTimeout(30000)
			.cursorFinalizerEnabled(true).build();

	public MongoClient getMongoClient(String ip, int port, String userName,
			String authDBName, String pwd) {

		ServerAddress serverAddress = new ServerAddress(ip, port);
		List addrsList = new ArrayList();
		addrsList.add(serverAddress);

		MongoCredential credential = MongoCredential.createScramSha1Credential(
				userName, authDBName, pwd.toCharArray());
		List credentials = new ArrayList();
		credentials.add(credential);

		return new MongoClient(addrsList, credentials, MONGO_CLIENT_OPTIONS);

	}

	public MongoClient getMongoClient(List addsList, String userName,
			String authDBName, String pwd) {

		MongoCredential credential = MongoCredential.createScramSha1Credential(
				userName, authDBName, pwd.toCharArray());
		List credentials = new ArrayList();
		credentials.add(credential);

		return new MongoClient(addsList, credentials, MONGO_CLIENT_OPTIONS);

	}

    /**
    * 根据条件删除数据,可多条件
    */
	public void deleteManyByCondition(Map dbPara,Document doc){

		MongoDBUtil util = new MongoDBUtil();
        MongoClient mongoClient = util.getMongoClient(dbPara.get("ip").toString(),
                Integer.parseInt(dbPara.get("port").toString()),
                dbPara.get("userName").toString(), dbPara.get("authDBName")
                        .toString(), dbPara.get("pwd").toString());
        MongoDatabase mongoDatabase = mongoClient.getDatabase(dbPara.get("usedb")
                .toString());

        MongoCollection collection = mongoDatabase.getCollection(dbPara.get("collectionName").toString());
        collection.deleteMany(doc);
	}

    /**
     * 根据条件删除数据,可多条件
     */
	public void updateManyByCondition(Map dbPara, Document filterDoc, Document updateDoc,boolean isUpsert){
		MongoDBUtil util = new MongoDBUtil();
		MongoClient mongoClient = util.getMongoClient(dbPara.get("ip").toString(),
				Integer.parseInt(dbPara.get("port").toString()),
				dbPara.get("userName").toString(), dbPara.get("authDBName")
						.toString(), dbPara.get("pwd").toString());
		MongoDatabase mongoDatabase = mongoClient.getDatabase(dbPara.get("usedb")
				.toString());

		MongoCollection collection = mongoDatabase.getCollection(dbPara.get("collectionName").toString());

		Document setDoc = new Document("$set", updateDoc);
		collection.updateMany(filterDoc,setDoc, new UpdateOptions().upsert(isUpsert));
	}

	public static void main(String[] args) {
		Map dbPara = new HashMap();
		dbPara.put("ip", "120.77.40.80");
        dbPara.put("port", Integer.valueOf("28018"));
        dbPara.put("userName", "NewCarReadNWrite");
        dbPara.put("pwd", "readnwriteshuding1101");
        dbPara.put("authDBName", "newcar");
        dbPara.put("usedb", "newcar");
        dbPara.put("collectionName","tco_price_standard");

        Document doc = new Document("Year","2017").append("Month", "1");

        MongoDBUtil dbUtil = new MongoDBUtil();
        dbUtil.deleteManyByCondition(dbPara, doc);
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值