mysql存取大文本text和批处理数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | public class ReadWriteBigData { /* create database bigdata; use bigdata; create table bigdata //创建表 ( id varchar(20)primary key, pinglun text,(大数据) image blob(二进制) );*/ public void insert() { try { Connection con=DBHelper.getConnection(); String sql= "insert into bigdata(id,pinglun) value(?,?)" ; PreparedStatement ps=con.prepareStatement(sql); ps.setString( 1 , "A001" ); //存取大文本,用preparedStatement对象方法读到流中去 File f= new File( "src//mysql/1.txt" ); FileReader reader= new FileReader(f); ps.setCharacterStream( 2 , reader,f.length()); //ps.setBinaryStream(parameterIndex, x, length);//插入图像等二进制 int i=ps.executeUpdate(); if (i> 0 ) { System.out.println( "insert success" ); }} catch (Exception e) { System.out.println( "fail....." ); } } @Test public void test() throws FileNotFoundException, SQLException { ReadWriteBigData r= new ReadWriteBigData(); r.insert(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package mysql; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import org.junit.Test; //preparedStatement.addBatch()处理批处理只能执行一种sql语句(插入,更新。。),多个数据的表复制 //preparedStetement用的比较多 //statement.addBatch()能处理多条sql,能同时插入,更新删除。。 //批处理数据,如果处理插入100万条数据,不能一次插入100万条数据 //可以用for循环,没插入1000条addBatch(),然后clearBatch()在插入 public class batch { @Test public void test1() throws SQLException { Connection con= null ; PreparedStatement ps= null ; con = DBHelper.getConnection(); String sql = "insert into login(username,password) values(?,?)" ; ps = con.prepareStatement(sql); for ( int i= 0 ;i< 10 ;i++) { ps.setString( 1 , i+ "" ); ps.setString( 2 , i+ "" ); ps.addBatch(); //批处理,内部装在list集合中 } ps.executeBatch(); //一次性执行批处理代码 } @Test public void test2() throws SQLException { //分批次处理100万条数据,每次执行1000条,在addBatch(),在clearBatch(),不然会内存漏出 long a=System.currentTimeMillis(); Connection con= null ; PreparedStatement ps= null ; con = DBHelper.getConnection(); String sql = "insert into login(username,password) values(?,?)" ; ps = con.prepareStatement(sql); for ( int i= 201 ;i< 2000 ;i++) { ps.setString( 1 , i+ "" ); ps.setString( 2 , i+ "" ); ps.addBatch(); if (i% 1000 == 0 ) //每次加入1000条数据 { ps.executeBatch(); //批处理,先执行1000次 ps.clearBatch(); //先加入的数据清空 } } ps.executeBatch(); //执行批处理代码 System.out.println( "the time execute is" +(System.currentTimeMillis()-a)); } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥