MYSQL批量插入数据的实现代码第1/3页_java

@echo off
cls
set CLASSPATH=..\api\jogre.jar
set CLASSPATH=%CLASSPATH%;.
set CLASSPATH=%CLASSPATH%;classes
set CLASSPATH=%CLASSPATH%;lib\dom4j.jar
java org.jogre.server.JogreServer
建表

复制代码 代码如下:

create database con_test;
use con_test;
create table test(id int not null,txt varchar (70),primary key (id),index (id));

就两个字段,id加索引。
用java程序给表循环10万次插入纪录,id(循环次数) 和 内容(这条记录是第=xx)
InsertTestMysql.java

复制代码 代码如下:

import java.lang.*;
import java.sql.*;
public class InsertTestMysql{
public static void main(String [] args){
java.util.Date now_start = new java.util.Date();
long start_time=now_start.getTime();
int st = 100000;
String str,info;
String db="org.gjt.mm.mysql.Driver";
String host="jdbc:mysql://192.168.1.35/test";
String user="root";
String passwd="root";
Connection con=null;
try{
Class.forName(db).newInstance();
}
catch(Exception e){
System.out.println("加载驱动失败:"+db);
}
try{
con=DriverManager.getConnection(host,user,passwd);
con.setAutoCommit(false);//关闭事务自动提交
for (int i=1;i<=st;i++){
info = "这条记录是第=";
info = info.concat(java.lang.Integer.toString(i));
str = "insert into test (id,txt) values(?,?);";
PreparedStatement pstmt = con.prepareStatement(str);
pstmt.setInt(1,i);
pstmt.setString(2,info);
pstmt.executeUpdate();
}
con.commit();//语句执行完毕,提交本事务
con.close();
}
catch(Exception e) {
System.out.println(e);
}
java.util.Date now_end = new java.util.Date();
long end_time=now_end.getTime();
long use_time=end_time-start_time;
System.out.println("<<---本页生成耗时["+use_time+"]毫秒("+((double)use_time)/1000+"秒)--->>");
System.out.println("\n<<---共插入记录"+st+"条-->>");
}
}

在不同版本的jdbc下,表现不同。
jdbc 3.1.7, 12770,12778 插入这个数目时,程序退出,中文正常。
jdbc 3.1.12 12000 插入这个数目时,程序退出,中文正常。
均出现以下提示:
"Exception in thread "main" java.lang.OutOfMemoryError: Java heap space"
“Java 堆 空间 错误”,可能是我机器内存不够。但用3.10系列jdbc就正常。
jdbc 3.0.16-ga 10万记录正常,中文正常。
jdbc 3.0.10 10万记录成功,但中文错误。
使用3.1系列jdbc,程序运行后,机器剩余物理内存很快就成了40xxKB了。
这个,也可能是jdbc3.1系列需要内存大,我机器内存不足。
明天再去同学的AMD64 512M RAM 机器测试。
jdbc 3.0.16-ga 唯一这个正常的,测试结果为:

复制代码 代码如下:

D:\Program Files\test\db_test>java InsertTestMysql
<<---本页生成耗时[98582]毫秒(98.582秒)--->>
<<---共插入记录100000条-->>

前几天又测试了下,用开源的jdts 的jdbc 连接ms-sql server 2000 sp3 其他同上,测试结果惨不忍睹:

复制代码 代码如下:

D:\dev\java\src\ts\Ms-Sql>java InsertTestMssql
<<---本页生成耗时[1746681]毫秒(1746.681秒)--->>
<<---共插入记录100000条-->>

当前1/3页 123下一页阅读全文

时间: 2024-09-23 18:26:01

MYSQL批量插入数据的实现代码第1/3页_java的相关文章

MySQL批量插入数据脚本_Mysql

MySQL批量插入数据脚本 #!/bin/bash i=1; MAX_INSERT_ROW_COUNT=$1; while [ $i -le $MAX_INSERT_ROW_COUNT ] do mysql -uroot -proot dbname -e "insert into tablename (name,age,createTime) values ('HELLO$i',$i % 99,NOW());" d=$(date +%M-%d\ %H\:%m\:%S) echo &qu

批量处理-mysql 批量提交数据,在存储过程中,分别判断是更新,还是插入,怎么统计更新了多少条,插入了多少条

问题描述 mysql 批量提交数据,在存储过程中,分别判断是更新,还是插入,怎么统计更新了多少条,插入了多少条 存储过程中计数器初始设置为零,每成功一次加1, 问题是,批量处理后,计数器每次都被重置,没有实现累加 求解救 解决方案 计数写全局变量,不要用局部变量 解决方案二: 如果是用JDBC批量提交数据的话,会返回一个int值标识插入或者修改或者删除了多少条记录的. 解决方案三: 你是否定义为局部变量了,或者是你没有执行增加操作,一直是在赋值.

数据库插入-向mysql中插入数据时报错,错误提示如下,代码如下

问题描述 向mysql中插入数据时报错,错误提示如下,代码如下 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like,note) values (?,?,?,?,?,?

MYSQL批量插入数据库实现语句性能分析

  假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCHAR( 50 ) NOT NULL, other_value VARCHAR( 50 ) NOT NULL ) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example (example_id, name, value, other_valu

Java实现mybatis批量插入数据到Oracle_java

最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式:  结合网上资料,写了个小demo,文章末尾附上demo下载地址  1.新建项目:项目目录结构如下图所示,添加相应的jar包 2.新建数据库表:ACCOUNT_INFO CREATE TABLE ACCOUNT_INFO ( "ID" NUMBER(12) NOT NULL , "USERNAME" VARCHAR2(64 BYTE) NULL , &

java实现jdbc批量插入数据_java

首先介绍三种JDBC批量插入编程方法,进行比较,具体内容如下 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一:使用PreparedStatement加批量的方法 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(o_url, userName, pass

Mysql批量插入和更新的性能

问题描述 利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不固定),循环3000次.每次在循环到100次左右的时候,会出现"com.jolbox.bonecp.ConnectionPartition - BoneCP detected an unclosed connection and will now attempt to close it f

codeigniter框架批量插入数据

 本文介绍codeigniter框架批量插入数据的实例,优化了其中的插入算法,大家参考使用吧   代码如下: $sub_form = array();   $loop = 0;   $ins_loop = 0;   $sum = count($form_datas);   $this->logger->info('insert data total:'.$sum);   //使用事物批量导入有助于提高插入效率   $callStartTime = microtime(true);   $thi

C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// <param name="sourceDataTable">数据源表</param> /// <param name="targetTableName">服务器上目标表</param> /// <param nam