DbUtil db = new DbUtil();
try {
db.connect(
"com.mysql.jdbc.Driver",
"jdbc:mysql://192.168.0.151/ztzx?useUnicode=true&characterEncoding=UTF-8",
"app", "app");
String sql = "select max(sfzhm) from idc";
String uuid = "";
String sfzhm = "0";
Vector<Object[]> vec = db.select(sql);
if(vec==null || vec.size()==0){
sfzhm="0";
}else{
for(Object[] obj:vec){
sfzhm= String.valueOf(obj[0]);
}
}
if(StringUtils.isBlank(sfzhm)){
sfzhm = "0";
}
System.out.println("===start===sfzhm===="+sfzhm);
File file = new File("D:\\sfzhm.jpg");
InputStream in = new BufferedInputStream(new FileInputStream(file));
blob = FileUtils.readFileToByteArray(file);
//PreparedStatement 必须的
PreparedStatement ps = null;
//long sfz= 0;
for (int i = 0; i < 10000000; i++) {
sfzhm = String.valueOf(Long.parseLong(sfzhm)+1);
sfzhm = CommUtils.getFormatStr(sfzhm, 18);
sql = "insert into idc (enabled,name,sfzhm,img) values (?,?,?,?)";
ps = db.getCconOra().prepareStatement(sql);
ps.setInt(1, 0);
ps.setString(2, "测试姓名");
ps.setString(3, sfzhm);
ps.setBinaryStream(4, in, (int) file.length());
//ps.setBytes(4, blob);
ps.addBatch();
// 1000条批量提交一次
if (i % 100 == 0) {
ps.executeBatch();
}
if (i % 1000 == 0) {
db.commit();
ps.close();
ps = db.getCconOra().prepareStatement(sql);
}
System.out.println(i+"=====sfzhm===="+sfzhm);
}
in.close();
in = null;
db.commit();
long end = System.currentTimeMillis();
System.out.println((end - start)/1000);
} catch (Exception e) {
db.rollback();
e.printStackTrace();
} finally {
db.disConnect();
}
分享到:
相关推荐
例如,对于大文件,可能需要考虑分块读写,以避免一次性加载大量内存。此外,你还需要确保数据库的索引策略考虑到BLOB字段,因为BLOB字段不适合作为主键或频繁进行索引查找。 在实际应用中,你可能还会遇到其他挑战...
当积累了一定数量的语句或者操作完成后,使用`PreparedStatement.executeBatch()`一次性提交所有语句。这种方式减少了与数据库的交互次数,提高了性能。 5. **关闭资源**:记得在操作完成后关闭Statement和...
将多张图片的插入操作打包成一个批次,然后一次性提交,这样可以减少与数据库的交互次数,提高导入速度。 6. **错误处理和资源关闭**:确保在发生异常时正确地回滚事务,并在操作完成后关闭数据库连接和文件输入流...
适用于在一次性插入100-1000+条记录时, 提高效率。默认值是8M。可以针对数据量的大小,翻倍增加。 myisam_sort_buffer_size = 1024M # MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX...
7. **合并SELECT**:一次性获取多个字段,如`SELECT column1, column2 FROM table`。 8. **索引使用**:非等值条件可能阻止后续条件使用索引。 9. **避免计算和函数**:SQL中避免数学运算和函数,保持业务逻辑和...
5. **数据批理插值**:批理插值是指在大数据量下进行数据插入操作时,一次性处理多条记录,而非一条一条地插入。这样可以大大提高效率,减少数据库系统的负担。 6. **挑战与注意事项**: - **数据类型兼容性**:...
同时,对于大型图片,一次性加载到内存可能会导致内存溢出,这时可以考虑分块读取和写入。另外,如果数据库支持,使用存储过程或批量插入可以提高性能。 8. **注意**: - BLOB字段的大小限制取决于数据库的配置,...
- **效率**:批量操作可以提高性能,例如,将多个图片数据一次性写入数据库。 - **备份与恢复**:由于数据库中存储了图片数据,备份和恢复数据库也包括了图片数据,需要考虑备份策略和恢复的复杂性。 4. **使用...
1. 使用流处理而非一次性加载整个图片到内存。 2. 分离存储和访问,例如将图片URL存储在数据库中,而图片文件存储在文件系统或云存储服务。 3. 对于大量图片,使用索引优化查询速度。 4. 如果可能,使用存储过程来...
4. **分批处理**:对于大量数据的操作,如批量插入,可以采用循环分批处理的方式,避免一次性发送大量数据。 5. **数据存储优化**:对于经常涉及大字段操作的表,考虑是否真的需要这么大的字段,是否可以采用其他...
- **批量添加**:通过`INSERT INTO`语句的变种,一次插入多行数据。 - **查询数据**:使用`SELECT`语句获取满足条件的数据,可以结合`WHERE`子句进行筛选。 - **更新数据**:`UPDATE`语句用于修改现有记录,通常...
批量插入可以提高性能,避免多次数据库往返。在JDBC中,可以调用Statement对象的addBatch()方法添加SQL语句到批处理队列,然后调用executeBatch()执行批量操作。 【数据库事务】 数据库事务是确保数据一致性的重要...
2. 优化INSERT语句,可以使用多值INSERT语句一次性插入多行数据,减少网络通信开销。例如: ```sql INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ... ``` 除此...
MySQL是世界上最流行的关系型数据库管理系统之一,其在面试中经常涉及深入的技术问题,尤其是在求职面试中。以下是对一些核心知识点的详细解释: 1. **MySQL 锁机制**: - **表级锁**:适用于简单查询和批量更新,...
批处理允许一次性执行多条SQL语句,减少了网络往返次数,提高了批量数据处理的效率。 #### 十二、JDBC其他API 包括可滚动结果集、分页技术和可更新结果集等功能,进一步增强了JDBC的灵活性和功能。 #### 十三、...
通过批量添加SQL语句到批处理队列中,然后一次性执行,可以显著提高插入速度。 #### 十二、JDBC其他API **12.1 可滚动结果集** 可滚动结果集允许用户前后移动游标位置,方便进行数据检索。 **12.2 分页技术** ...