mysql存取大文本text和批处理数据

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();

	}

}

  

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));
	}
}

  

时间: 2024-10-11 05:35:42

mysql存取大文本text和批处理数据的相关文章

jdbc基础 (三) 大文本、二进制数据处理

LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有BLOB,没有CLOB,mysql存储大文本用TEXT TEXT  分为:TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT BLOB 分为:TINYBLOB.BLOB.MEDIUMBLOB和LONGBLOB 取值范围如下图: 下面来看具体的代码实现: 1 package com.cr

使用JDBC处理MySQL大文本和大数据

LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. MySQL数据库中没有专门的CLOB数据类型,而如果要存储大文本,MySQL采用的是TEXT类型.TEXT类型又有TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT之分.MySQL中的BLOB类型又可分为TINYBLOB.BLOB.MEDIUMBLOB和LONGBLOB. 使用JDB

mysql数据库---批处理与大文本/图片类型

要在java对数据库做任何操作,第一件事当然是获取数据库连接,笔者是通过配置文件的形式加载数据库信息的,配置文件名为db.properties,内容如下 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/customermanage username=root password=root ps:properties中的内容均为键值对形式,不需要用到引号 接下来是DBUtil类,获取配置,得到连接 package com.ch

sql 批处理、获取自增长、事务、大文本处理

批处理 需要批量执行sql语句! 需求:批量保存信息! 设计: AdminDao Public void save(List<Admin list){ // 目前用这种方式 // 循环 // 保存 (批量保存) } Public void save(Admin admin ){ // 循环 // 保存 } 技术: |-- Statement 批处理相关方法 void addBatch(String sql) 添加批处理 void clearBatch() 清空批处理 int[] executeB

asp数据库编程:Oracle大文本在ASP中存取问题的解决

在我开发BS结构程序中,由于经常需要在ORACLE中处理一些容量较大的文本数据,所以经过反复测试终于用ASP成功解决了大文本数据在ORACLE下存取问题. 一.运行环境: 1.Microsoft Windows 2000 Server + IIS 5.02.Oracle8i中文标准版 二.建立数据表: CREATE TABLE SYSTEM.TEST(BLOB LONG,ID NUMBER)/ 三.源程序:1.数据存入程序:test.asp <%'表单提交处理部分{上海治疗阳痿医院}'-----

大文本的存取

1 package cn.itcast.jdbc.lob; 2 3 import java.io.File; 4 import java.io.FileReader; 5 import java.io.FileWriter; 6 import java.io.Reader; 7 import java.io.Writer; 8 import java.sql.Connection; 9 import java.sql.PreparedStatement; 10 import java.sql.R

MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据

介绍MySQL的文本和图形数据类型: Text 类型: 数据类型:描述 ------------------------------------------------------ char(size):保存固定长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的长度.最多 255 个字符. varchar(size):保存可变长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的最大长度.最多 255 个字符. 注释:如果值的长度大于 255,则被转换为 text类型

JDBC学习笔记(三)大文本数据的读写

一.用JDBC向数据库插入大文本数据 String sql = "insert into my_clob values (null, ?)"; ps = conn.prepareStatement(sql); File f = new File("D:\\BaiduNetdiskDownload\\mysql\\jdbc.sql"); Reader reader = new BufferedReader(new FileReader(f)); ps.setChara

JDBC读写MySQL的大字段数据

JDBC读写MySQL的大字段数据 不管你是新手还是老手,大字段数据的操作常常令你感到很头痛.因为大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式 来处理的.而非一般的字段,一次即可读出数据.本人以前用到Spring+iBatis架构来操作大字段,结果以惨烈失败而告终,在网上寻求解决方案,也 没找到答案.最终以JDBC来实现了大字段操作部分. 本文以MySQL为例,通过最基本的JDBC技术来处理大字段的插入.读取操作. 环境: MySQL5.1 JDK1.5 一.认识My