vampireDXQ的博客

Keep It Simple, Stupid

Java操作csv导入,导出及存储到MySQL数据库

Java操作csv导入,导出及存储到MySQL数据库

一个需求要使用到csv,要支持批量插入数据库,自学以后,写出简单的demo测试类,并测试了6000条数据。
package com.surekam.smg;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;

public class CSV_Test {
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String>();
        long start = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            list.add("1");
            list.add("12");
            list.add("123");
            list.add("1234");
            list.add("12345");
            list.add("123456");
        }

//       writeCSV(list,"D:\\dev\\telNum.csv");
        List list2 = readCSV();
        long endRead = System.currentTimeMillis();
        System.out.println("total1 = endRead - start:"+(endRead - start));//163ms

        insertTel_test(list2);

        long end = System.currentTimeMillis();
        System.out.println("total = end - start:"+(end - start));//13734ms
    }

    /**
     * 把数据导出到csv
     * @param dataList
     * @param finalPath
     */
    static void writeCSV(List dataList, String finalPath) {
        FileOutputStream out = null;
        OutputStreamWriter osw = null;
        BufferedWriter bw = null;
        try {
            File finalCSVFile = new File(finalPath);
            out = new FileOutputStream(finalCSVFile);
            osw = new OutputStreamWriter(out, "UTF-8");
            // 手动加上BOM标识
            // osw.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }));
            bw = new BufferedWriter(osw);
            /**
             * 往CSV中写新数据
             */
            if (dataList != null && !dataList.isEmpty()) {
                // for循环遍历
                for (int i = 0; i < dataList.size(); i++) {
                    Integer num = (Integer) dataList.get(i);
                    System.out.println(num);
                    bw.append(num + "\r");
                    // bw.append(num + ",");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

            if (bw != null) {
                try {
                    bw.close();
                    bw = null;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (osw != null) {
                try {
                    osw.close();
                    osw = null;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                try {
                    out.close();
                    out = null;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
        System.out.println(finalPath + "数据导出成功");
    }

    /**
     * 把数据从csv中读取到list
     * @return
     */
    public static List readCSV() {
        try {
            ArrayList<String> list = new ArrayList<String>();
            BufferedReader reader = new BufferedReader(new FileReader("D:\\dev\\telNum.csv"));// 文件名
            // reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉
            String line = null;
            while ((line = reader.readLine()) != null) {
                String item[] = line.split(",");// CSV格式文件为逗号分隔符文件,这里根据逗号切分
                String last = item[item.length - 1];// 获取到的数据
                // int value = Integer.parseInt(last);//如果是数值,可以转化为数值

                list.add(last);
                // System.out.println(last);
            }
            System.out.println("从CSV中读取到的数据:" + list);
            return list;
        } catch (Exception e) {
        }
        return null;

    }

    /**
     * 批量插入到数据库
     * @param list
     */
    public static void insertTel_test(List<String> list) {
        // 声明Connection对象
        Connection conn;
        String sql = "insert into tel_test(tel)value(?)";
        // 驱动程序名
        String driver = "com.mysql.jdbc.Driver";
        // URL指向要访问的数据库名mydata
        String url = "jdbc:mysql://132.79.253.132:3306/ats_test2?useUnicode=true&amp;characterEncoding=gbk";
        // MySQL配置时的用户名
        String user = "zzzd";
        // MySQL配置时的密码
        String password = "zzzd@lxhf_123";
        // 遍历查询结果集

        // 加载驱动程序
        try {
            Class.forName(driver);
            // 连接MySQL数据库!!
            conn = DriverManager.getConnection(url, user, password);
            PreparedStatement prep = conn.prepareStatement(sql);
            for (String value : list) {
                prep.setString(1, value);
                prep.executeUpdate();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32332777/article/details/80696464
个人分类: 工作笔记
想对作者说点什么? 我来说一句

javaCSV导入导出

2014年01月22日 2KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭