JDBC連接MySQL數(shù)據(jù)庫批量插入數(shù)據(jù)過程詳解
這篇文章主要介紹了JDBC連接MySQL數(shù)據(jù)庫批量插入數(shù)據(jù)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
1.讀取本地json數(shù)據(jù)
2.jdbc理解數(shù)據(jù)庫
3.批量插入
maven 引入jar包:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Java實現(xiàn)代碼:
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class Test {
public static void main(String[] args) {
Test test = new Test();
Map<Integer, JSONObject> map = test.readJsonData();
test.jdbcConnBatch(map);
}
//批量插入數(shù)據(jù)庫
void jdbcConnBatch(Map<Integer, JSONObject> map){
try{
//1.注冊驅(qū)動
Class.forName("com.mysql.cj.jdbc.Driver");
//2.獲取連接
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=no",
"test", "test");
String sql = "insert into insurance" +
"(product_name,country,tag,tag_type,company," +
"insure_period,observation_period,qzzl,qzbz,qzhm,zjzl," +
"zjbz,zjqc,jbzmq,tdjb,sg," +
"jylstd,fhbfgn,gfqz,bzbf0,bzbf30,bzbf40)" +
" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
//3.獲得預(yù)處理對象
PreparedStatement pstmt = con.prepareStatement(sql);
//遍歷map
for (Map.Entry<Integer, JSONObject> entry : map.entrySet()) {
String value = entry.getValue().toJSONString();
JSONObject json = JSONObject.parseObject(value);
//4.SQL語句占位符設(shè)置實際參數(shù)
pstmt = process(pstmt,json);
pstmt.addBatch();
}
//5.執(zhí)行批量操作
int [] counts = pstmt.executeBatch();
System.out.println("執(zhí)行條數(shù):"+counts.length);
//6.釋放資源
pstmt.close();
con.close();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
/**
* 讀取文件數(shù)據(jù)加入到map緩存中
*/
Map<Integer, JSONObject> readJsonData(){
try{
Map<Integer, JSONObject> map = new ConcurrentHashMap();
File testFile = new File("D:\\data.json");
String jsonString = FileUtils.readFileToString(testFile);
JSONArray jsonArr = JSONArray.parseArray(jsonString);
for(int i = 0; i < jsonArr.size(); i++) {
String str = jsonArr.get(i).toString();
JSONObject json = JSONObject.parseObject(str);
map.put(i,json);
}
return map;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//處理PreparedStatement數(shù)據(jù)
PreparedStatement process(PreparedStatement pstmt,JSONObject json ) {
try {
pstmt.setString(1,getParameter(json.get("product_name")));
pstmt.setString(2,getParameter(json.get("country")));
pstmt.setString(3,getParameter(json.get("tag")));
pstmt.setString(4,getParameter(json.get("tag_type")));
pstmt.setString(5,getParameter(json.get("company")));
pstmt.setString(6,getParameter(json.get("insure_period")));
pstmt.setString(7,getParameter(json.get("observation_period")));
pstmt.setString(8,getParameter(json.get("qzzl")));
pstmt.setString(9,getParameter(json.get("qzbz")));
pstmt.setString(10,getParameter(json.get("qzhm")));
pstmt.setString(11,getParameter(json.get("zjzl")));
pstmt.setString(12,getParameter(json.get("zjbz")));
pstmt.setString(13,getParameter(json.get("zjqc")));
pstmt.setString(14,getParameter(json.get("jbzmq")));
pstmt.setString(15,getParameter(json.get("tdjb")));
pstmt.setString(16,getParameter(json.get("sg")));
pstmt.setString(17,getParameter(json.get("jylstd")));
pstmt.setString(18,getParameter(json.get("fhbfgn")));
pstmt.setString(19,getParameter(json.get("gfqz")));
pstmt.setString(20,getParameter(json.get("bzbf0")));
pstmt.setString(21,getParameter(json.get("bzbf30")));
pstmt.setString(22,getParameter(json.get("bzbf40")));
return pstmt;
}catch (SQLException e) {
e.printStackTrace();
}
return null;
}
String getParameter(Object obj) {
String str = null;
str = obj == null ? null : obj.toString();
return str;
}
}
mysql建表SQL:
CREATE TABLE `insurance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `product_name` varchar(100) DEFAULT NULL, `country` varchar(100) DEFAULT NULL, `tag` varchar(100) DEFAULT NULL, `tag_type` varchar(100) DEFAULT NULL, `company` varchar(100) DEFAULT NULL, `insure_period` varchar(100) DEFAULT NULL, `observation_period` varchar(100) DEFAULT NULL, `qzzl` varchar(100) DEFAULT NULL, `qzbz` varchar(100) DEFAULT NULL, `qzhm` varchar(100) DEFAULT NULL, `zjzl` varchar(100) DEFAULT NULL, `zjbz` varchar(100) DEFAULT NULL, `zjqc` varchar(100) DEFAULT NULL, `jbzmq` varchar(100) DEFAULT NULL, `tdjb` varchar(2048) DEFAULT NULL, `sg` varchar(2028) DEFAULT NULL, `jylstd` varchar(2048) DEFAULT NULL, `fhbfgn` varchar(100) DEFAULT NULL, `gfqz` varchar(100) DEFAULT NULL, `bzbf0` varchar(100) DEFAULT NULL, `bzbf30` varchar(100) DEFAULT NULL, `bzbf40` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=231 DEFAULT CHARSET=utf8;
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JDBC連接MySql數(shù)據(jù)庫步驟 以及查詢、插入、刪除、更新等
- java中JDBC實現(xiàn)往MySQL插入百萬級數(shù)據(jù)的實例代碼
- Java使用JDBC向MySQL數(shù)據(jù)庫批次插入10W條數(shù)據(jù)(測試效率)
- 使用JDBC在MySQL數(shù)據(jù)庫中如何快速批量插入數(shù)據(jù)
- Java使用JDBC或MyBatis框架向Oracle中插入XMLType數(shù)據(jù)
- java實現(xiàn)jdbc批量插入數(shù)據(jù)
- JDBC鏈接mysql插入數(shù)據(jù)后顯示問號的原因及解決辦法
- JDBC插入數(shù)據(jù)返回數(shù)據(jù)主鍵代碼實例
相關(guān)文章
Springboot整合WebSocket實戰(zhàn)教程
WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動向客戶端推送數(shù)據(jù),這篇文章主要介紹了Springboot整合WebSocket實戰(zhàn)教程,需要的朋友可以參考下2023-05-05
kafka啟動報錯(Cluster ID)不匹配問題以及解決
這篇文章主要介紹了kafka啟動報錯(Cluster ID)不匹配問題以及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
struts2的國際化實現(xiàn)網(wǎng)站整體中英文切換實例代碼
本篇文章主要介紹了struts2的國際化實現(xiàn)網(wǎng)站整體中英文切換實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
SpringBoot?Test的webEnvironment源碼解讀
這篇文章主要為大家介紹了SpringBoot?Test的webEnvironment源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
關(guān)于Integer.parseInt()方法的使用
這篇文章主要介紹了關(guān)于Integer.parseInt()方法的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
Spring中的@PropertySource注解源碼詳細解析
這篇文章主要介紹了Spring中的@PropertySource注解源碼詳細解析,@PropertySource注解,標(biāo)注在配置類@Configuration上面,下面主要分析一下@PropertySource注解的處理過程,也就是怎么把配置信息從.properies文件放到environment中的,需要的朋友可以參考下2024-01-01

