java 将csv表格文件写入数据库 jdbc CSVReader(从小白到高手的实现)

目录

将一个csv文件写入数据库 

将一个文件夹下的所以csv文件循环写入数据库

将一个文件夹下的所以csv文件写入数据库(使用线程池 executor)


将一个csv文件写入数据库 



import com.opencsv.CSVReader;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class ExcelToDatabase {

    public static void main(String[] args) {
        String csvFilePath = "D:\\pythonProject1\\work\\工会.csv";

        try (CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(csvFilePath), "gbk"));
             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/rm?useUnicode=true&characterEncoding=UTF-8", "root", "123456")) {

            //Sheet sheet = workbook.getSheetAt(0); // Assuming data is in the first sheet
            reader.skip(1);

            String[] nextLine;
            while ((nextLine = reader.readNext()) != null) {
                //Row row = sheet.getRow(i);
                String name = nextLine[0];
                String email = nextLine[1];
                String department = nextLine[2];
                String Unnamed3 = nextLine[3];
                String Unnamed4 = nextLine[4];
                String Unnamed5 = nextLine[5];
                String phone = nextLine[6];
                String alias = nextLine[7];
                String status = nextLine[8];
                String work_type = nextLine[9];
                String used_space = nextLine[10];
                String allocated_space = nextLine[11];
                String sort_order = nextLine[12];
                String last_login_time = nextLine[12];
                String last_password_change_time = nextLine[14];
                String create_time = nextLine[15];

                // Continue to extract other columns as needed

                // Insert data into database
                String insertQuery = "INSERT INTO jtEmail (name, email, department,Unnamed3,Unnamed4,Unnamed5,phone, alias, status, work_type, used_space, allocated_space, sort_order, last_login_time, last_password_change_time, create_time) " +
                        "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?)";
                PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
                preparedStatement.setString(1, name);
                preparedStatement.setString(2, email);
                preparedStatement.setString(3, department);
                preparedStatement.setString(4, Unnamed3);
                preparedStatement.setString(5, Unnamed4);
                preparedStatement.setString(6, Unnamed5);
                preparedStatement.setString(7, phone);
                preparedStatement.setString(8, alias);
                preparedStatement.setString(9, status);
                preparedStatement.setString(10, work_type);
                preparedStatement.setString(11, used_space);
                preparedStatement.setString(12, allocated_space);
                preparedStatement.setString(13, sort_order);
                preparedStatement.setString(14, last_login_time);
                preparedStatement.setString(15, last_password_change_time);
                preparedStatement.setString(16, create_time);
                // Set other parameters
                preparedStatement.executeUpdate();
            }

            System.out.println("Data inserted into database successfully.");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

将一个文件夹下的所以csv文件循环写入数据库



import com.opencsv.CSVReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class ExcelToDatabaseAll {

    public static void main(String[] args) {
        String directoryPath = "D:\\pythonProject1\\work\\";

        File directory = new File(directoryPath);
        File[] files = directory.listFiles((dir, name) -> name.toLowerCase().endsWith(".csv"));

        if (files != null) {
            for (File file : files) {
                try (CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(file), "gbk"));
                     Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/rm?useUnicode=true&characterEncoding=UTF-8", "root", "123456")) {

                    String[] nextLine;
                    reader.skip(1);
                    while ((nextLine = reader.readNext()) != null) {
                        String name = nextLine[0];
                        String email = nextLine[1];
                        String department = nextLine[2];
                        String Unnamed3 = nextLine[3];
                        String Unnamed4 = nextLine[4];
                        String Unnamed5 = nextLine[5];
                        String phone = nextLine[6];
                        String alias = nextLine[7];
                        String status = nextLine[8];
                        String work_type = nextLine[9];
                        String used_space = nextLine[10];
                        String allocated_space = nextLine[11];
                        String sort_order = nextLine[12];
                        String last_login_time = nextLine[12];
                        String last_password_change_time = nextLine[14];
                        String create_time = nextLine[15];
                        // Continue to extract other columns as needed

                        // Insert data into database
                        String insertQuery = "INSERT INTO jtEmail (name, email, department,Unnamed3,Unnamed4,Unnamed5,phone, alias, status, work_type, used_space, allocated_space, sort_order, last_login_time, last_password_change_time, create_time) " +
                                "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?)";
                        PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
                        preparedStatement.setString(1, name);
                        preparedStatement.setString(2, email);
                        preparedStatement.setString(3, department);
                        preparedStatement.setString(4, Unnamed3);
                        preparedStatement.setString(5, Unnamed4);
                        preparedStatement.setString(6, Unnamed5);
                        preparedStatement.setString(7, phone);
                        preparedStatement.setString(8, alias);
                        preparedStatement.setString(9, status);
                        preparedStatement.setString(10, work_type);
                        preparedStatement.setString(11, used_space);
                        preparedStatement.setString(12, allocated_space);
                        preparedStatement.setString(13, sort_order);
                        preparedStatement.setString(14, last_login_time);
                        preparedStatement.setString(15, last_password_change_time);
                        preparedStatement.setString(16, create_time);
                        // Set other parameters
                        preparedStatement.executeUpdate();
                    }

                    System.out.println("Data from file " + file.getName() + " inserted into database successfully.");

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

将一个文件夹下的所以csv文件写入数据库(使用线程池 executor)



import com.opencsv.CSVReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExcelToDatabaseAllThread {

    public static void main(String[] args) {
        String directoryPath = "D:\\pythonProject1\\work\\";
        //初始化线程池
        ExecutorService executor = Executors.newFixedThreadPool(10);

        File directory = new File(directoryPath);
        File[] files = directory.listFiles((dir, name) -> name.toLowerCase().endsWith(".csv"));

        if (files != null) {
            for (File file : files) {
                executor.submit(() -> { //提交任务到线程池
                    try (CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(file), "gbk"));
                         Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/rm?useUnicode=true&characterEncoding=UTF-8", "root", "123456")) {

                        String[] nextLine;
                        reader.skip(1);
                        while ((nextLine = reader.readNext()) != null) {
                            String name = nextLine[0];
                            String email = nextLine[1];
                            String department = nextLine[2];
                            String Unnamed3 = nextLine[3];
                            String Unnamed4 = nextLine[4];
                            String Unnamed5 = nextLine[5];
                            String phone = nextLine[6];
                            String alias = nextLine[7];
                            String status = nextLine[8];
                            String work_type = nextLine[9];
                            String used_space = nextLine[10];
                            String allocated_space = nextLine[11];
                            String sort_order = nextLine[12];
                            String last_login_time = nextLine[12];
                            String last_password_change_time = nextLine[14];
                            String create_time = nextLine[15];
                            // Continue to extract other columns as needed

                            // Insert data into database
                            String insertQuery = "INSERT INTO jtEmail (name, email, department,Unnamed3,Unnamed4,Unnamed5,phone, alias, status, work_type, used_space, allocated_space, sort_order, last_login_time, last_password_change_time, create_time) " +
                                    "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?)";
                            PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
                            preparedStatement.setString(1, name);
                            preparedStatement.setString(2, email);
                            preparedStatement.setString(3, department);
                            preparedStatement.setString(4, Unnamed3);
                            preparedStatement.setString(5, Unnamed4);
                            preparedStatement.setString(6, Unnamed5);
                            preparedStatement.setString(7, phone);
                            preparedStatement.setString(8, alias);
                            preparedStatement.setString(9, status);
                            preparedStatement.setString(10, work_type);
                            preparedStatement.setString(11, used_space);
                            preparedStatement.setString(12, allocated_space);
                            preparedStatement.setString(13, sort_order);
                            preparedStatement.setString(14, last_login_time);
                            preparedStatement.setString(15, last_password_change_time);
                            preparedStatement.setString(16, create_time);
                            // Set other parameters
                            preparedStatement.executeUpdate();
                        }

                        System.out.println("Data from file " + file.getName() + " inserted into database successfully.");

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                });
            }
        }

        executor.shutdown();
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值