这篇文章主要介绍了JDBC连接MySQL数据库批量插入数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.读取本地json数据
2.jdbc理解数据库
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实现代码:
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); } //批量插入数据库 void jdbcConnBatch(Map<Integer, JSONObject> map){ try{ //1.注册驱动 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.获得预处理对象 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语句占位符设置实际参数 pstmt = process(pstmt,json); pstmt.addBatch(); } //5.执行批量操作 int [] counts = pstmt.executeBatch(); System.out.println("执行条数:"+counts.length); //6.释放资源 pstmt.close(); con.close(); }catch (ClassNotFoundException e) { e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); } } /** * 读取文件数据加入到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数据 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;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍使用JDBC在MySQL数据库中如何快速批量插入数据,包括了使用JDBC在MySQL数据库中如何快速批量插入数据的使用技巧和注意事项,需要的朋友参考一下 使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: Adds a set of parameters to t
我创建了一个向MySql数据库插入数百万个值的程序。我读到过有关批插入的文章,它将优化我的程序并使其更快,但当我尝试这样做时,它以同样的方式工作。我没有将每个值插入数据库,而是每次将500个值保存在一个列表中,然后将它们插入一个大循环中,如下所示: 然后我删除列表中的所有值,并再次开始收集500个值。它不应该工作得更好吗? 我的插入代码是: 我有一些问题: 1。为什么当我批量插入时它不能更快地工作
本文向大家介绍Jmeter连接Mysql数据库实现过程详解,包括了Jmeter连接Mysql数据库实现过程详解的使用技巧和注意事项,需要的朋友参考一下 昨天把Mysql装好了,这个躺在草稿中很久的文章也可以出炉了。 首先需要准备个Mysql jdbc驱动包,尽量保证其版本和你的数据库版本一致,至少不低于数据库版本,否则可能有问题。去官网扒一个下来吧:https://dev.mysql.com/do
主要内容:1. 导入JDBC包,2. 注册JDBC驱动程序,数据库URL配置,创建连接对象,使用具有用户名和密码的数据库URL,关闭JDBC连接安装相应的驱动程序后,现在是时候来学习使用JDBC建立数据库连接了。 建立JDBC连接所涉及的编程相当简单。 以下是基本的四个步骤 - 导入JDBC包:使用Java语言的语句在Java代码开头位置导入所需的类。 注册JDBC驱动程序:使JVM将所需的驱动程序实现加载到内存中,从而可以满足JDBC请求。 数据库URL配置:创建一个正确格式化的地址,指向要连
本文向大家介绍MySQL批量插入数据脚本,包括了MySQL批量插入数据脚本的使用技巧和注意事项,需要的朋友参考一下 MySQL批量插入数据脚本 新建表格就可以了 插入十万的数据为./jiaoben.sh 100000
本文向大家介绍Node.js下向MySQL数据库插入批量数据的方法,包括了Node.js下向MySQL数据库插入批量数据的方法的使用技巧和注意事项,需要的朋友参考一下 项目(nodejs)中需要一次性插入多笔数据到数据库,数据库是mysql的,由于循环插入的性能太差,就像使用批量插入的方法提高数据的插入性能。 批量插入的数据库的表结构如下: 1.数据库连接 将插入数据转换成嵌套数组 例如要插入的两