java 读取文件夹并存入数据库(TXT)

package com.zte.m2m.dao.upload;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;


import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

import java.sql.CallableStatement;
import java.sql.Connection;

import oracle.sql.ARRAY;

import com.zte.ismp.common.dao.CommonDao;

import util.DBHandle;
/**
 * <pre>
 * 描述信息:数据批量汇入
 *
 * @author xieyuchun
 * @version 1.0
 *
 * 完成日期:2014-06-13
 * </pre>
 */

public class DataBatchUploadDao extends CommonDao {
    /*
     * 文件入库
     *
     * filePath:文件夹绝对路径
     */
    public void upload (String filePath){
        System.out.println("文件入库");
        DBHandle handler = null;
        Connection con = null;
        CallableStatement cstmt = null; 

        try{

    //数据库连接对象
            handler = this.getHandler();

    //获取数据库连接
            con = handler.getCon();
            
            if(1 == 1){
                String encoding="GBK";

                File folder = new File(filePath);

      //folder.list() 获取文件夹下所有文件名
                String[] fileArray = folder.list();
                for (String fileName : fileArray) {
                    System.out.println(fileName);
                    
                    File file = new File(filePath+"\\"+fileName);
                    fileName = fileName.substring(0, fileName.indexOf("."));
                    
                    // //判断文件是否存在
                    if (file.isFile() && file.exists())
                    {
                        InputStreamReader read = new InputStreamReader(

                        new FileInputStream(file), encoding);

                        BufferedReader bufferedReader = new BufferedReader(read);

                        String lineTxt = null;
                        // 读取txt
                        while ((lineTxt = bufferedReader.readLine()) != null) {
                            System.out.println(lineTxt);
                            cstmt = con.prepareCall("{ call pro_forall_insert(?,?,?) }");
                            cstmt.setObject(1,fileName);
                            cstmt.setObject(2, lineTxt);
                            cstmt.setObject(3, ",");
                            cstmt.execute();
                        }
                        read.close();
                        System.out.println("文件入库完成");
                    } else {

                        System.out.println("找不到指定的文件");
                    }
                }
            }
            
         } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                if (null != handler) {
                    handler.release();
            }
         }
    }
}

转载于:https://www.cnblogs.com/xzcc/p/3802780.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将一个txt文件中的数据写入数据库,你需要完成以下步骤: 1. 创建数据库连接:使用DriverManager类的getConnection()方法创建一个数据库连接。此方法需要数据库的URL、用户名和密码等参数。 2. 打开txt文件:使用Java I/O操作打开txt文件,并读取其中的数据。 3. 将数据插入数据库:使用PreparedStatement对象将读取的数据插入数据库中。在插入数据之前,你需要为PreparedStatement对象设置SQL语句中的占位符(使用问号表示)并设置对应的参数。 4. 关闭连接:在完成所有操作之后,记得关闭数据库连接。 下面是一个简单的Java程序,演示了如何将txt文件中的数据写入MySQL数据库: ```java import java.io.BufferedReader; import java.io.FileReader; import java.sql.*; public class Main { public static void main(String[] args) { try { // 加载MySQL JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 创建数据库连接 Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // 打开txt文件 BufferedReader br = new BufferedReader(new FileReader("data.txt")); // 创建插入数据的PreparedStatement对象 String sql = "INSERT INTO mytable(name, age) VALUES(?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); // 逐行读取txt文件插入数据库中 String line; while ((line = br.readLine()) != null) { String[] parts = line.split(","); String name = parts[0]; int age = Integer.parseInt(parts[1]); pstmt.setString(1, name); pstmt.setInt(2, age); pstmt.executeUpdate(); } // 关闭连接 pstmt.close(); conn.close(); br.close(); } catch (Exception ex) { ex.printStackTrace(); } } } ``` 在上面的代码中,你需要将数据库URL、用户名和密码替换为你自己的信息。此外,你需要将data.txt文件放在程序所在的目录下,并按照逗号分隔每一行的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值