gpt4 book ai didi

java - 我怎样才能从一个大文件中读取并以快速的方式将它插入到数据库中

转载 作者:行者123 更新时间:2023-12-01 00:11:11 27 4
gpt4 key购买 nike

我有这个格式的文本文件

int | string | string | string |
int | string | string | string |
int | string | string | string |
.
.
.

此文件的大小约为 80 MB。我必须阅读此文件,并在进行一些评估后将其添加到数据库中。

我所做的是读取一行,然后根据某些条件将它们添加到数据库中。但是这段代码花了很长时间。我运行这段代码已经一天多了,但还没有结果!

我该怎么做才能让它更快。

我知道应该有某种方法可以一次读取整个文件。

顺便说一句,我正在使用 mysql

帮帮我,伙计们!

这是我的代码

public void fill_names_db() throws Exception{

MySQLAccess dao = new MySQLAccess();
Scanner stringScanner;



BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\havij\\Downloads\\taxdump\\names.dmp"));

String tax_id;
String name_txt;
String unique_name;
String name_class;
Connection connect=null;
connect = dao.newConnection();



while (in.ready()) {


String s = in.readLine();
//System.out.println(s);
stringScanner = new Scanner(s).useDelimiter("\t|\t");

tax_id = stringScanner.next();
stringScanner.next();
name_txt = stringScanner.next();
stringScanner.next();
unique_name = stringScanner.next();
stringScanner.next();
name_class = stringScanner.next();



if(name_class.equals("scientific name"))
dao.insertToDB(connect, "id_to_name", tax_id.toString(), name_txt);

if(dao.hasKey(connect,"name_to_id",name_txt))
if (!unique_name.isEmpty())
dao.insertToDB(connect, "name_to_id",unique_name,tax_id.toString(),name_txt,unique_name, name_class );

else if(!name_txt.isEmpty())
dao.insertToDB(connect, "name_to_id",name_txt,tax_id.toString(),name_txt,unique_name, name_class );


}
dao.close(connect);
in.close();
System.out.println("done");

}

最佳答案

该文件的格式已经很好,可以使用 MySQL LOAD DATA INFILE 指令。您可以在这里阅读:http://dev.mysql.com/doc/refman/4.1/en/load-data.html

你只需要使用'|'作为您的字段分隔符和\n 作为您的行分隔符。

不要忘记 LOCAL 关键字,因为该文件可能位于 SQL 客户端的文件系统中。

关于java - 我怎样才能从一个大文件中读取并以快速的方式将它插入到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17662581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com