package com.file;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
public class ResolvFile {
public static String readFileContent(String filepath) {
//1.读取每一行记录,保存到List中
ArrayList<String> records = new ArrayList<String>();
try {
BufferedReader br = new BufferedReader(new FileReader(filepath));
String aRecord;
while((aRecord = br.readLine())!=null){
records.add(aRecord);//把读取到的每一行记录保存到List中
}
br.close();//用完以后关闭流
} catch (Exception e) {
e.printStackTrace();
}
//2.处理每一条记录成SQL语句或保存为对象(a.去掉字段前后的分号b.拼接成SQL或者保存为对象)
ArrayList<String> recordList = new ArrayList<String>();//用于保存生成的SQL或对象
for(int i = 0;i<records.size();i++) {
String record = records.get(i);
String[] recArray = minusQuotation(record.split(","));
//拼接SQL语句或保存为对象
String recordSql = getRecordSql(recArray);
if (null!=recordSql) {
recordList.add(recordSql);
}
}
//3.批量执行SQL或保存对象
batchExecuteSql(recordList);
return null;
}
public static int batchExecuteSql(ArrayList<String> sqlList) {
System.out.println("接下来可以执行SQL语句或保存对象");
System.out.println("========批量执行SQL语句==========");
System.out.println("将所有语句加入到Statment stat中");
for (int i = 0;i<sqlList.size();i++) {
String string = sqlList.get(i);
System.out.println("通过stat.addBatch(sql)来加入语句"+i+": '"+string+"'");
}
System.out.println("通过stat.executeBatch()来执行所有的SQL语句");
System.out.println("========批量执行SQL语句结束==========");
//int count = stat.executeBatch();
//return count;//返回执行的语句数量
return sqlList.size();
}
//生成每条记录的SQL
public static String getRecordSql(String[] recArray) {
if (null==recArray) {
return null;
}
String recordSql = "insert into tablename (sms,no,time) values('"+recArray[0]+"','"+recArray[2]+"','"+recArray[5]+"')";
return recordSql;
}
/**
* 去掉数组中每一个元素的开头和结尾的引号
* @param recArray 要处理的数组
* @return 处理后的数组
*/
public static String[] minusQuotation(String[] recArray) {
for (int i = 0; i < recArray.length; i++) {
String str = recArray[i];
if (null!=str) {
if(str.indexOf( "\"")==0)
str = str.substring(1,str.length());//去掉开头的分号
if(str.lastIndexOf("\"")==(str.length()-1))
str = str.substring(0,str.length()-1); //去掉最后的分号
}
recArray[i] = str;
}
return recArray;
}
public static void main(String[] args) {
String filepath = "E:\\sxySMS\\smstest.txt";
readFileContent(filepath);
}
}
分享到:
相关推荐
### Java批量执行SQL知识点解析 在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、...
### JDBC批量操作详解 #### 一、JDBC批量插入 JDBC(Java Database Connectivity)是Java平台中用来标准地连接数据库的技术。通过JDBC,Java应用程序可以与多种类型的数据库进行交互,实现数据的读取、写入等功能...
因此,出现了批量执行Sql脚本的工具,如我们这里提到的"批量执行Sql脚本工具",它能有效提升工作效率,确保数据操作的一致性和准确性。该工具由作者自行编写,并提供了源码,这为用户提供了更多的定制化可能。 批量...
首先,JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一种规范,它允许程序员使用SQL语句直接操作数据库。在批量插入场景下,JDBC提供了Statement对象的addBatch()和executeBatch()方法,可以将...
对于大型数据集,可能需要考虑使用数据库特定的批量插入优化,例如MySQL的LOAD DATA INFILE命令,或者通过BULK INSERT在SQL Server中进行批量导入。这些方法通常比JDBC的批量处理更快,但不适用于所有情况。 在实际...
在实际应用中,"batchinsert"可能是一个包含示例代码的文件,展示了如何使用JDBC批量插入Blob字段的具体实现。通过研究和理解这些代码,你可以更好地掌握批量插入Blob数据的技巧,并根据自己的需求进行调整和优化。 ...
3. **执行SQL操作**:通过Statement或PreparedStatement对象执行SELECT、INSERT、UPDATE、DELETE等SQL命令。 4. **处理结果集**:对于查询操作,可以获取`java.sql.ResultSet`对象,遍历并处理返回的数据。 5. **...
通过`addBatch()`和`executeBatch()`,可以批量执行多条SQL语句,提升性能。 **11. 面向对象的JDBC** `javax.sql.DataSource`接口提供了更高级别的数据库连接管理,适用于EJB和应用服务器。 **12. SQL Server 2000...
3. **执行SQL语句**:调用Statement或PreparedStatement的`executeQuery()`或`executeUpdate()`方法,执行SELECT、INSERT、UPDATE、DELETE等SQL语句。 4. **处理结果集**:对于`executeQuery()`返回的结果集,可以...
4. **执行更新操作**:`executeUpdate()`方法用于执行INSERT、UPDATE、DELETE等非查询语句。 5. **处理事务**:使用`Connection`对象的`setAutoCommit()`和`commit()`/`rollback()`方法来控制事务。 6. **批处理**:...
- **SQL查询执行**:执行SQL语句,包括SELECT、INSERT、UPDATE、DELETE等操作。 - **批处理**:允许一次性提交多个SQL语句,提高效率。 - **事务支持**:支持ACID(原子性、一致性、隔离性和持久性)事务特性。 ...
### JDBC批量操作数据分析与实例 #### 一、引言 在日常软件开发中,数据库操作是必不可少的一部分。其中,批量操作作为一种高效的处理方式被广泛应用于数据处理任务中。本文将通过对一个具体的Java程序示例(使用...
6. **批处理**:`BatchUpdateException`允许批量执行SQL语句,提高效率。 7. **连接池**:为了优化性能和资源管理,开发者可以利用连接池,如C3P0或HikariCP,管理SQLServer JDBC连接。 8. **性能优化**:SQL...
7. **批处理操作**:批量执行SQL语句以提高性能,如使用addBatch和executeBatch方法。 8. **预编译的PreparedStatement**:了解预编译SQL的好处,如防止SQL注入,提高执行效率。 9. **数据库连接池**:虽然描述中...
这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。下面我们将深入探讨MyBatis的SQL执行机制及相关知识点。 首先,MyBatis的核心组件是SqlSessionFactory,它是创建...
本主题将深入探讨利用JDBC进行触发器创建、存储过程执行、表的构建,以及数据库的备份和恢复操作。 首先,**JDBC创建触发器** 是一种数据库级别的事件响应机制,允许在特定数据库事件(如插入、更新或删除记录)...
-批处理:使用Statement对象的addBatch()和executeBatch()方法实现多条SQL语句的批量执行,提高性能。 - 游标处理:利用ResultSet的next()方法遍历查询结果,以及absolute()、relative()等方法进行游标定位。 - 元...
本文主要讨论的是在Eclipse环境中,如何使用微软的JDBC Driver来连接Azure SQL Database,并且对比了微软JDBC驱动与JTDS驱动在连接和操作数据库时的差异,强调了微软JDBC驱动在某些场景下的优势。 首先,微软的JDBC...
6. **批处理**:通过`Statement.addBatch()`和`Statement.executeBatch()`,可以批量执行SQL命令,提高效率。 7. **预编译的PreparedStatement**:对于频繁执行的SQL语句,可以预编译为PreparedStatement对象,提升...
- **SQL-to-Elasticsearch**:尽管Elasticsearch原生不支持SQL查询,但可以通过一些中间件或者插件如`Elasticsearch-JDBC`、`Logstash Input JDBC`、`Hue SQL for Elasticsearch`等,使得用户能够用SQL语句来查询...