java读取文件将内容保存到数据库

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import com.mysql.cj.util.StringUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;

public class IndbSeo{
    //前期准备:需自己导入数据库jar包和commons-io-2.8.0.jar包
    //数据库配置
    final String  driver_class_name="com.mysql.jdbc.Driver";
    final String  url="jdbc:mysql://ip:端口/数据库?useUnicode=true&characterEncoding=utf8&useSSL=false";
    final String  username="用户";
    final  String password="密码";
    //表名,需自己先在数据库中建好
    final String table="test";
    //数组中元素代表每个字段(顺序要对),有主键将下面的flag改为1
    String [] a=new String[]{"T0","T1","T2","T3","T4"};
    //文件绝对路径
    final  static String  fileName="";
    //flag:1代表加主键自增长,0代表无主键(有主键将flag改为1)
    static  int flag=1;

    //主键自增长,无需修改
    static  int i=1;
    public static void main(String[] args) {
        IndbSeo rcf = new IndbSeo();
        rcf.readTxtFileByFileUtils(fileName);
    }

    int idx;
    Connection conn = null;
    PreparedStatement pstmt = null;
    // 使用commons-io.jar包的FileUtils的类进行读取
    public void readTxtFileByFileUtils(String fileName) {

        File file = new File(fileName);
        //判断文件是否存在
        if(file.isFile() && file.exists()) {
            dbConnection();
            try {
                LineIterator lineIterator = FileUtils.lineIterator(file, "GB2312");
                while (lineIterator.hasNext()) {
                    String line = lineIterator.nextLine();
                    // 行数据转换成数组
                    String[] custArray = line.split("\\|");
                    insertCustInfo(custArray,a);
                    i++;
                    Thread.sleep(2);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                dbDisConnection();
            }
        }else{
            System.out.println("系统找不到指定的文件,请查看文件路径!");
        }
    }

    // 插入到数据库中
    public void insertCustInfo(String[] strArray,String [] a) {
        try {
            StringBuffer sqlBf = new StringBuffer();
            sqlBf.setLength(0);
            /*避免重复输入INSERT IGNORE  INTO
              先删除再输入REPLACE INTO
              正常输入INSERT INTO
             */
            sqlBf.append("INSERT INTO "+table+"(");
            for (int i=0;i<a.length;i++){
                if (!StringUtils.isNullOrEmpty(a[i])){
                    sqlBf.append(i<a.length-1 ? a[i]+",":a[i]+")");
                }
            }


            sqlBf.append("   VALUES( ");
            for (int i=0;i<a.length;i++){
                if (!StringUtils.isNullOrEmpty(a[i])){
                    sqlBf.append(i<a.length-1 ?  " ?, " : " ?)   ");
                }
            }

            pstmt = conn.prepareStatement(sqlBf.toString());
            idx = 1;
            pstmt.clearParameters();
            if (flag==1){
                pstmt.setString(idx++, i+"");
                for (int i=0;i<a.length-1;i++){
                    if (!StringUtils.isNullOrEmpty(a[i])){
                        pstmt.setString(idx++, strArray[i]);
                    }
                }
            }else {
                for (int i=0;i<a.length;i++){
                    if (!StringUtils.isNullOrEmpty(a[i])){
                        pstmt.setString(idx++, strArray[i]);
                    }
                }}
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    // 连接数据库
    public Connection dbConnection() {
        try {
            Class.forName(driver_class_name);

            conn = DriverManager.getConnection(url, username, password);

            System.out.println("连接数据库成功!");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return conn;
    }

    // 关闭数据库
    public void dbDisConnection() {
        if (conn != null) {
            try {
                conn.close();
                System.out.println("关闭数据库成功!");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值