|
@@ -0,0 +1,77 @@
|
|
|
+package cn.com.qmth.dp.examcloud.oe.modules.executesql;
|
|
|
+
|
|
|
+import cn.com.qmth.dp.examcloud.oe.util.FileHelper;
|
|
|
+import com.mongodb.BasicDBObject;
|
|
|
+import com.mongodb.client.result.UpdateResult;
|
|
|
+import org.apache.commons.io.LineIterator;
|
|
|
+import org.bson.Document;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.mongodb.core.MongoTemplate;
|
|
|
+import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
+import org.springframework.data.mongodb.core.query.Query;
|
|
|
+import org.springframework.data.mongodb.core.query.Update;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class ExecuteSql {
|
|
|
+
|
|
|
+ private final static Logger log = LoggerFactory.getLogger(ExecuteSql.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MongoTemplate mongoTemplate;
|
|
|
+
|
|
|
+ public void start() {
|
|
|
+ // this.updateQuestionAnswer("648dbca0b51f8b1c554623ad", "正确");
|
|
|
+ // this.batchSql();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void batchSql() {
|
|
|
+ int curTotal = 0; // 391832
|
|
|
+ File file = new File("C:\\Users\\deason\\Desktop\\sql.txt");
|
|
|
+ try (LineIterator lines = FileHelper.readLines(file);) {
|
|
|
+ while (lines.hasNext()) {
|
|
|
+ String line = lines.nextLine();
|
|
|
+ curTotal++;
|
|
|
+ if (curTotal % 10000 == 0) {
|
|
|
+ System.out.println(" ****************** " + curTotal + " 进度:" + (curTotal * 100 / 391832) + "%");
|
|
|
+ }
|
|
|
+ this.updateSql(line);
|
|
|
+ }
|
|
|
+ System.out.println(" ****************** " + curTotal + " 进度:" + (curTotal * 100 / 391832) + "%");
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("执行完毕,共 " + curTotal + " 行!");
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateSql(String sql) {
|
|
|
+ BasicDBObject bson = new BasicDBObject();
|
|
|
+ bson.put("$eval", sql);
|
|
|
+ mongoTemplate.getDb().runCommand(bson);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateQuestionAnswerBySql(String questionId, String quesAnswer) {
|
|
|
+ String sql = String.format("db.getCollection('question').update({\"_id\":ObjectId(\"%s\")},{\"$set\":{\"quesAnswer\":\"%s\"}});", questionId, quesAnswer);
|
|
|
+ System.out.println(sql);
|
|
|
+
|
|
|
+ BasicDBObject bson = new BasicDBObject();
|
|
|
+ bson.put("$eval", sql);
|
|
|
+ Document document = mongoTemplate.getDb().runCommand(bson);
|
|
|
+ log.info("questionId:{} quesAnswer:{}", questionId, quesAnswer);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateQuestionAnswer(String questionId, String quesAnswer) {
|
|
|
+ Query query = Query.query(Criteria.where("_id").is(questionId));
|
|
|
+ Update update = new Update();
|
|
|
+ update.set("quesAnswer", quesAnswer);
|
|
|
+ UpdateResult upResult = mongoTemplate.updateFirst(query, update, "question");
|
|
|
+ log.info("questionId:{} quesAnswer:{} result:{}", questionId, quesAnswer, upResult.getMatchedCount());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|