使用java讀取js文件,將數據寫入數據庫


package cn.itcast.day04.test;

/**
 參數說明:java -jar InsertData.jar 數據庫url 表名 文件路徑 是否再插入前刪除
 該方法存在的問題是,讀入本地數據后沒必要放在二維數組中,這樣會大大降低插入的效率,可以分塊讀入,
 每次讀幾千條,然后插入數據庫,並提交。或者使用多線程,還在學習之中。
 */


import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import java.sql.SQLException;


import java.util.ArrayList;
import java.util.List;



public class ReadFile {

    private static String url_unic = "?useUnicode=true&characterEncoding=utf8";

    //讀取文本文件
    public static String[][] writeToDat(String path) {
        File file = new File(path);
        List<String> list = new ArrayList<String>();
        String[][] strings = null;

        try {
            InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf8");
            BufferedReader bw = new BufferedReader(isr);
            String line = null;
            while ((line = bw.readLine()) != null) {
                //System.out.println(line);
                list.add(line);
            }
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        strings = new String[list.size()][14];
        for (int i = 0; i < list.size(); i++) {
            String[] st = list.get(i).split("\t");
            for (int j = 0; j < st.length; j++) {
                strings[i][j] = st[j];
                //System.out.println(strings[i][j]);
            }


        }
        System.out.println("load data success!");
        return strings;
    }

    //連接數據庫
    public static Connection getConnection(String url, String dataBase, String user, String pwd) {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url_total = url + "/" + dataBase + url_unic;
            //System.out.println(url_total);
            conn = DriverManager.getConnection(url_total, user, pwd);
            System.out.println("connection success!");
        } catch (Exception e) {
            System.out.println("connection fail!");
            e.printStackTrace();
        }
        return conn;
    }

    //關閉數據庫連接

    public static void closeCon(Connection con) {
        if (con != null) {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    //插入數據
    public static boolean insertIntoTable(String url, String dataBase, String user, String pwd, String table, String[][] str) {
        Connection conn = getConnection(url, dataBase, user, pwd);

        try {
            String sql = "insert into " + table + " (" + "inner_account_id,account_id,custom_id,custom_cname,account_type,is_internal,"
                    + "first_login_date,last_date,account_mode,is_special_line,account_status,custom_type_id,iwind_type,has_auxiliary"
                    + ")" + " values " + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            //System.out.println(sql);

            for (int i = 0; i < str.length; i++) {
                pstmt.setInt(1, Integer.parseInt(str[i][0]));
                //System.out.println(str[i][0]);
                for (int j = 1; j < str[i].length; j++) {
                    //System.out.println(str[i][j]);
                    pstmt.setString(j + 1, str[i][j]);
                }
                pstmt.executeUpdate();
            }
            System.out.println("insert data success!");
            closeCon(conn);
            return true;

        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("insert data fail!");
            closeCon(conn);
            return false;
        }
    }

    //刪除數據庫數據
    public static void dropData(String url, String dataBase, String user, String pwd, String table) {
        Connection conn = getConnection(url, dataBase, user, pwd);
        try {
            String sql = "delete from " + table;
            //System.out.println(sql);
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.executeUpdate();
            System.out.println("delete data success!");
            closeCon(conn);

        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("delete data fail!");
            closeCon(conn);
        }
    }

    public static void main(String[] args) {
        /*--------調試-----------//
        String path = "E:\\Java\\basic-code\\day04-code\\src\\cn\\itcast\\day04\\test\\a.txt";
        String[][] strings = writeToDat(path);
        for(int i=0;i<strings.length;i++){
            for(int j=0;j<strings[i].length;j++){
                System.out.print(strings[i][j]+'\t');
            }
            System.out.println();

        }
        */


        String url = args[0];
        String table = args[1];
        String path = args[2];
        String deleteFlag = args[3];
        System.out.println(deleteFlag);
        String dataBase = "****";
        String user = "****";
        String pwd = "****";
        System.out.println(url);
        System.out.println(table);
        System.out.println(path);

        //將文件數據讀入二維數組
        String[][] strings = writeToDat(path);


        if (deleteFlag.equals("true") | deleteFlag.equals("True")) {
            dropData(url, dataBase, user, pwd, table);
        }

        //創建數據庫連接,並向數據庫中插入數據
        insertIntoTable(url, dataBase, user, pwd, table, strings);

    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM