将js代码中的数据写入mysql_使用java读取js文件,将数据写入数据库

这篇博客介绍了一个Java程序,用于读取JS文件中的数据,并将其高效地写入MySQL数据库。程序避免了将数据存入二维数组,而是采用分块读取和多线程的方式提高插入效率。内容包括读取文件、建立数据库连接、插入数据和删除数据的步骤。
摘要由CSDN通过智能技术生成

packagecn.itcast.day04.test;/**参数说明:java -jar InsertData.jar 数据库url 表名 文件路径 是否再插入前删除

该方法存在的问题是,读入本地数据后没必要放在二维数组中,这样会大大降低插入的效率,可以分块读入,

每次读几千条,然后插入数据库,并提交。或者使用多线程,还在学习之中。*/

import java.io.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;public classReadFile {private static String url_unic = "?useUnicode=true&characterEncoding=utf8";//读取文本文件

public staticString[][] writeToDat(String path) {

File file= newFile(path);

List list = new ArrayList();

String[][] strings= null;try{

InputStreamReader isr= new InputStreamReader(new FileInputStream(file), "utf8");

BufferedReader bw= newBufferedReader(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!");returnstrings;

}//连接数据库

public staticConnection 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();

}returnconn;

}//关闭数据库连接

public static voidcloseCon(Connection con) {if (con != null) {try{

con.close();

}catch(Exception e) {

e.printStackTrace();

}

}

}//插入数据

public static booleaninsertIntoTable(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 voiddropData(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 voidmain(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

for(int j=0;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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值