java将文本读取写入数据库

11 篇文章 0 订阅

核心思想:

1.找到要读取的文件。

2.通过文件流按行读取,因为一行是一条记录,按照文件的分割字符方式进行拆分数组。

3.遍历文本的行,每一行存数组。遍历数组,数据库字段对应数组下标进行插入。

 

代码示例

public class ShjkTest {
public static void main(String[] args) {
File file = new File("F:\\test.txt");//源文件地址
Connection conn =  DataSourceUtils.getConnection();
 
BufferedReader reader = null;
String tempString = null;
try {
int i=0;
conn.setAutoCommit(false);
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"gbk"); //避免中文乱码,gbk或者utf-8切换
        reader = new BufferedReader(read);
         while ((tempString = reader.readLine()) != null) {//按行读取
         i=i+1;
         String transno = "20190904"+get10Random();//id随即生成
         tempString = transno+"|"+tempString;//两张表id统一
         
         String sql = getSql(tempString);
         String sql1 = getSql2(tempString);
         
         SqlInsert.insert(conn,sql);
         SqlInsert.insert(conn,sql1);
         if(i>100){
         conn.commit();
         i=0;
         }
         }
         conn.commit();
} catch (Exception e) {
e.printStackTrace();
FileLog.systemLog(file+ "解析异常");
}finally {
DataSourceUtils.closeConnection(conn);
 
       if (reader != null) {
             try {
                    reader.close();
                } catch (IOException e1) {
                   e1.printStackTrace();
                   FileLog.systemLog("reader close Error!");
             }
         }
        }
 
}
/**
* 入库USERINFO表
* @param params
* @return
*/
public static String getSql(String params){
StringBuffer sb = new StringBuffer();
String [] temp = params.split("\\|"); // |字符需要转义
 
String VICECARDFLAGS = temp[13].equals('是')?"1":"0";//三元表达式
 
String birth = temp[18].substring(6, 14);
if(temp.length ==21){
sb.append(" insert into SHJK_USERINFO t"
+ "(t.TRANSNO,t.USERNAME,t.USERIDCODE,t.USERBIRTH,t.USERADDRESS,t.VICECARDFLAG,t.PRODFINISHDATE,"
+ "t.CELLPHONE,t.HALLNO,t.HALLADDRESS,t.inserttime)");
sb.append(" values('"+temp[0]+"','"+temp[16]+"','"+temp[18]+"','"+birth+"','"+temp[19]+
"','"+VICECARDFLAGS+"','"+temp[12]+"','"+temp[20]+"','"+temp[15]+"','"+temp[14]+"',sysdate) ");
}
return sb.toString();
}
 
/**
* 入库OFFERINFO表
* @param params
* @return
*/
public static String getSql2(String params){
StringBuffer sb = new StringBuffer();
String [] temp = params.split("\\|");
if(temp.length ==21){
sb.append(" insert into SHJK_OFFERINFO t(t.TRANSNO,t.OFFERINSTID,t.OFFERID,t.OFFERNAME,t.EFFDATE,"
+ "t.EXPDATE,t.STATUSCD,t.INSERTTIME)");
sb.append(" values('"+temp[0]+"','"+temp[1]+"','"+temp[9]+"','"+temp[8]+"','"+temp[10]+"','"+temp[11]+"','"
+"1000"+"',sysdate) ");
}
return sb.toString();
}
 
/**
* 获取10位随机数
* 
*/
    public static String get10Random(){
Random rd = new Random();
String str = rd.nextInt(1000000000)+"";
str = ("000000000000".substring(0, (10 - str.length())))+str ;
return str; 
}
 
 
}

 

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的任务,需要分步骤进行实现。我将会为您提供代码实现的大致思路和关键步骤,希望能够帮助到您。 1. 读取文本文件 使用Java中的File和FileReader类可以轻松读取文本文件。以下是一个读取文本文件的示例代码: ```java File file = new File("filename.txt"); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { // 处理每一行数据 } br.close(); fr.close(); ``` 2. 将数据写入DefaultTableModel 使用Java中的DefaultTableModel类可以轻松创建一个表格模,并将数据添加到其中。以下是一个将数据添加到DefaultTableModel的示例代码: ```java DefaultTableModel model = new DefaultTableModel(); model.addColumn("列1"); model.addColumn("列2"); // 将数据逐行添加到表格模中 while ((line = br.readLine()) != null) { String[] rowData = line.split(","); model.addRow(rowData); } ``` 3. 将数据写入数据库 使用Java中的JDBC API可以轻松将数据写入数据库。以下是一个将数据写入MySQL数据库的示例代码: ```java // 建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // 创建PreparedStatement对象 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO mytable (col1, col2) VALUES (?, ?)"); // 逐行将数据写入数据库 for (int i = 0; i < model.getRowCount(); i++) { pstmt.setString(1, model.getValueAt(i, 0).toString()); pstmt.setString(2, model.getValueAt(i, 1).toString()); pstmt.executeUpdate(); } pstmt.close(); conn.close(); ``` 以上代码仅供参考,您需要根据实际情况进行修改。同时,为了保证代码的可读性和可维护性,建议将不同功能的代码封装在不同的方法中,并添加必要的异常处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值