导航:首页 > 网络数据 > java导入导出大数据量txt数据库

java导入导出大数据量txt数据库

发布时间:2023-03-15 15:12:28

java 大数据量导出,该怎么解决

对于数据规模复太大的,做成制任务。

用户点击导出,检查他的数据规模,超过50W的,提示其数据规模过大,可能需要 N 小时完成,请稍候再来查询和下载导出结果。如果用户点击确定,你就提示:“任务已进入队列,点击此连接查询导出进度。”

然后你要做两件事情:
1、给这个用户记录个标识,就是他已经启动某导出任务,不能再启动新的了(或者限制一个人最多同时启动几个导出任务);
2、后台有个调度程序,开始执行导出工作,并将生成的Excel放在某磁盘目录或存在数据库中;这个调度任务可以控制下最大同时并发的导出任务数,以避免任务太多拖垮系统

另外需要开发界面查询导出进度以及下载导出结果。导出结果可以考虑一个最大保存周期,比如7天。

② 怎么利用JAVA导入大数据量的文本文件数据到

首先从文件中读取数据,每当读完一条纪录是,把它转换成oracle的插入语句。你可以执行,也可以存在一个大字符串里,最后一起执行

③ Java中怎么实现txt文件批量数据导入到Oracle中,在txt中有一定的格式,解析出来导入到Oracle。

1.读取文本文件,每次读取一行,用BufferedReader
2.因为每一行中都是固定的格式,因此解析每一行中的数据。
3.将解析的数据保存到数据库。

BufferedReader br = new BufferedReader(new FileReader(new File("aa.txt")));
String temp = null;
// 假定这是你写的将数据插入数据库的接口和实现类。
Dao = new DaoImpl();

while ((temp = br.readLine()) != null) {
String[] strs = temp.split("|");
String s1 = strs[0];//如上面的2300
String s2 = strs[1]; // 如上面的62220202222
String s3 = strs[2];//如上面的2000
String s4 = strs[3]; // 如上面的村镇银行3
//还需要写一个方法将数据插入数据库。
.insert(s1,s2,s3,s4);
}
br.close();

请自行导入所需要的包,并处理异常。

④ 用java代码把txt文档中资料导入到数据库

1、在数据库中建立一个表,创建两个字段,1个id,1个content(根据你估计的回文本内容大小,选定类型答 varchar,text,blob等)
2、写一个读取txt文本的类A。
3、用java 建立好数据库连接,通过类A把文本读出来,写到数据库中。

⑤ JAVA导入txt、CSV的例子

导入文件若为二进制格式的csv或xls文件需要用jxl.jar包来解析,若文件为文本格式逗号分隔的csv文件则需要用opencsv.jar包来解析。下面为导入两种格式文件的代码示例:1. 导入文本格式逗号分隔的csv文件Java代码 import au.com.bytecode.opencsv.CSVReader; import au.com.bytecode.opencsv.CSVReader; Java代码 public void importCsvFile() { CSVReader csvReader = null; try { csvReader = new CSVReader(new FileReader(importFile),',');//importFile为要导入的文本格式逗号分隔的csv文件,提供getXX/setXX方法 if(csvReader != null){ //first row is title, so past csvReader.readNext(); String[] csvRow = null;//row while ((csvRow = csvReader.readNext()) != null){ for (int i =0; i<csvRow.length; i++){ String temp = csvRow[i]; switch (i) { case 0: if(StringUtils.isNotEmpty(temp)){ linkman.setLinkmanName(temp); } break; case 1: if(StringUtils.isNotEmpty(temp)){ linkman.setLinkmanEmail(temp); } break; default: break; } } //保存linkman到数据库 if(linkman.getLinkmanName() != null && linkman.getLinkmanEmail() != null){ EmailLinkmanAPI.insertLinkman(linkman); } } } } catch (Exception e) { e.printStackTrace(); } } public void importCsvFile() { CSVReader csvReader = null; try { csvReader = new CSVReader(new FileReader(importFile),',');//importFile为要导入的文本格式逗号分隔的csv文件,提供getXX/setXX方法 if(csvReader != null){ //first row is title, so past csvReader.readNext(); String[] csvRow = null;//row while ((csvRow = csvReader.readNext()) != null){ for (int i =0; i<csvRow.length; i++){ String temp = csvRow[i]; switch (i) { case 0: if(StringUtils.isNotEmpty(temp)){ linkman.setLinkmanName(temp); } break; case 1: if(StringUtils.isNotEmpty(temp)){ linkman.setLinkmanEmail(temp); } break; default: break; } } //保存linkman到数据库 if(linkman.getLinkmanName() != null && linkman.getLinkmanEmail() != null){ EmailLinkmanAPI.insertLinkman(linkman); } } } } catch (Exception e) { e.printStackTrace(); } } 2. 二进制格式的csv或xls文件Java代码 import jxl.Sheet; import jxl.Workbook; import jxl.Sheet; import jxl.Workbook; Java代码 public void importXlsFile() { Workbook book = null; try { book = Workbook.getWorkbook(importFile);//importFile为要导入的xls文件,或二进制的csv文件,提供getXX/setXX方法 } catch (Exception e) { e.printStackTrace(); } if(book != null){ int sheetNo = book.getNumberOfSheets(); for(int i = 0; i < sheetNo; i++){ Sheet sheet=book.getSheet(i); int rowNum = sheet.getRows(); int colNum = sheet.getColumns(); //first row is title, so past for(int r = 1; r < rowNum; r++){//行 for(int c = 0; c < colNum;c++){//列 String temp = sheet.getCell(c,r).getContents(); switch (c) { case 0: if(StringUtils.isNotEmpty(temp)){ linkman.setLinkmanName(temp); } break; case 1: if(StringUtils.isNotEmpty(temp)){ linkman.setLinkmanEmail(temp); } break; default: break; } } //保存linkman到数据库 if(linkman.getLinkmanName() != null && linkman.getLinkmanEmail() != null){ EmailLinkmanAPI.insertLinkman(linkman); } } } } }

⑥ 如何通过java将查询出的数据通过数据库直接导出到txt文件

//查询态码祥数模镇据获取帆搏resultSet
while(rs.next()){
//直接写到文件
}

⑦ 用java如何将txt文件导入mysql

Java中将txt文件导入到基本的思路就是先使用I/O操作流获取到文件具体信息,然后将信息拼接成mysql插入到数据库中,示例如下:
1、先读取txt文件的内容,文件内容可以按照一定的规律进行排列,这样程序读取就方便。
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.config.Constants;
import com.utils.UUIDUtil;
/**
* txt文本数据 采集类
*
* @see
*/
public class UserDataGather {
public static final String TXT_FILE_PATH = "D://testUser.txt";
public static final String openFileStyle = "r";
public static final String fieldLimitChar = ".";
public static final int fieldAllCount = 1;
public static final String default_password = "PTMD0309";
public Integer count = 0;
private String FltNum;
public String UUID;
/**
* 功能:解析文本文件
*/
public void loadFile() {
try {
RandomAccessFile raf = new RandomAccessFile(TXT_FILE_PATH, openFileStyle);
String line_record = raf.readLine();
while (line_record != null) {
// 解析每一条记录
parseRecord(line_record);
line_record = raf.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能:具体解析每一条记录,这里可以增加很多对记录的解析判断条件,如是否为字母、
*/
@SuppressWarnings("static-access")
private void parseRecord(String line_record) throws Exception {
//拆分记录
// String[] fields = line_record.split(fieldLimitChar);
// System.out.println(tranStr(line_record)+"Ok");
String temp = line_record.substring(line_record.indexOf(fieldLimitChar, 0), line_record.indexOf(" ", line_record.indexOf(fieldLimitChar, 0)));
// if (fields.length == fieldAllCount) {
//
FltNum = tranStr(temp).trim().replace(fieldLimitChar,"").replace(" ","");
// System.out.println(FltNum);
if(FltNum.length()>=4){
if(!isNumeric(FltNum)){
// System.out.println(generateSql(FltNum)[0].toString());
// System.out.println(generateSql(FltNum)[1].toString());
count++;
String[] temp1 = generateSql(FltNum);
MyFile mf = new MyFile();
mf.creatTxtFile("insertPinTuUserSql");
mf.writeTxtFile(temp1[0].toString());
mf.creatTxtFile("UUID");
mf.writeTxtFile(temp1[1].toString()+",");
}
}else if(FltNum.length() ==2 || FltNum.length() ==3){
if(!isNumeric(FltNum)){
if(!isTwoCharacter(FltNum)){
// System.out.println(generateSql(FltNum)[0].toString());
// System.out.println(generateSql(FltNum)[1].toString());
count++;
String[] temp2 = generateSql(FltNum);
MyFile mf = new MyFile();
mf.creatTxtFile("insertPinTuUserSql");
mf.writeTxtFile(temp2[0].toString());
mf.creatTxtFile("UUID");
mf.writeTxtFile(temp2[1].toString()+",");
}
}
}
// InsertDB db = new InsertDB();
//
// db.insertDB(FltNum);
// }
}
@SuppressWarnings("static-access")
public String[] generateSql(String userName) throws IOException{
StringBuffer sbf = new StringBuffer();
String[] str = new String[2];
String uuid = UUIDUtil.getUUID();
sbf.append("insert into user values('"+uuid+"','" + userName +"','"+default_password+"',"+Constants.ENABLED+","+Constants.NUllDELETE+","+Constants.AUDITING+",'"+uuid+"@164.com','"+formatDateTime()+"',"+Constants.REGEDIT_USER+");/n");
sbf.append("insert into users values('"+uuid+"',"+ null+","+Constants.MALE+","+null+","+null+",'60.176.36.250','"+formatDateTime()+"',"+null+","+null+","+null+","+null+","+null+","+null+",0,"+null+","+null+",0,0,0,'"+formatDateTime()+"','1036',0,"+null+","+null+","+null+","+null+","+null+",'11',"+null+","+null+","+null+","+null+","+null+");/n");
sbf.append("insert into user_user_group values('"+uuid+"','"+ uuid +"','"+Constants.PERSONAL_USER+"');/n");
UUID = uuid;
str[0]=sbf.toString();
str[1]=UUID;
return str;
}
public String formatDateTime(){
Date date = new Date();
/**
* 时间格式化2009-12-31 09:04:31
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));
return sdf.format(date);
}
private String tranStr(String oldstr) {
String newstr = "";
try {
newstr = new String(oldstr.getBytes("ISO-8859-1"), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return newstr;
}
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}
public static boolean isTwoCharacter(String str){
String regEx="[a-zA-Z0-9]{2,3}";
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
return m.find();
}
}
2、连接数据库执行数据导入
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
/**
* 插入数据库 生成sql语句
*
* created on Mar 8, 2010
* @see
*/
public class InsertDB {
private static final String user = "pintu";
private static final String pwd = "pintu";
private static final String url = "jdbc:mysql://192.168.10.6:3306/pintu";
private static final String driver = "com.mysql.jdbc.Driver";
public static Connection getCon() {
Connection con = null;
try {
Class.forName(driver).newInstance();
con = (Connection) DriverManager.getConnection(url, user, pwd);
if (con != null) {
System.out.println("你已连接到数据库:" + con.getCatalog());
}
} catch (Exception e) {
System.out.println("连接数据库失败!");
e.printStackTrace();
}
return con;
}
public boolean insertDB(String FltNum) {
Connection con = null;
Statement stm = null;
boolean flag = false;
String sql = "insert into t_FltPsgInfo values('" + FltNum +
// "','"
// + FltLine + "','" + FltDate + "','" + PsgName + "','" + PsgType
//
// + "','" + PsgSex + "','" + PsgCab + "','" + PsgSeatNo + "','"
//
// + PsgInfo +
"')";
try {
con = getCon();
stm = (Statement) con.createStatement();
int i = stm.executeUpdate(sql);
if (i > 0) {
flag = true;
System.out.println(flag + "插入数据成功!");
}
} catch (Exception e) {
flag = false;
e.printStackTrace();
} finally {
close(null, stm, con);
}
return flag;
}
//关闭相关连接
public void close(ResultSet rs, Statement stm, Connection con) {
if (rs != null)
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
if (stm != null)
try {
stm.close();
} catch (Exception e) {
e.printStackTrace();
}
if (con != null)
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

⑧ 用java如何将txt文件导入mysql

Java中将txt文件导入到mysql基本困启码的思路,操作流获取到文件具体信息,然后将信息拼接成mysql插入到数据库中。

⑨ 编程实现大数据量数据的导入导出工作,具体每个月大约有2400万条数据需要导出并且做一些初步的分析。

你在程序里一条一条地调用数据库操作函数来插入数据会很慢的,应该用向你回后面那样的SQL语句一句完成,程答序里只要执行一次数据库操作,让数据库去处理会快很多。除了insert into table2 select * from table1 where ****
还可以select into table2 * from table1 where ****
如果要进行数据分析等稍微复杂一点的操作,可以在数据库里建个存储过程或者用户函数,有复杂的分析结果的话可以再建个表来存储,调用完成了去查询这个表就可以了

⑩ 如何用JAVA把TXT文件导入数据库中

1、java i/o读取txt文本
2、使用实体类封装或使用list、map等封装读取到的数据
3、jdbc

txt文本要保证符合一定的格式,如每个字段间已特定字符分割。

阅读全文

与java导入导出大数据量txt数据库相关的资料

热点内容
如何关闭文件共享端口 浏览:921
卫生健康文件有哪些 浏览:568
单个应用怎么关闭数据 浏览:653
韩版6sa1688网络支持 浏览:716
java中如何新建数组 浏览:302
电脑打开文件的软件 浏览:369
买鞋应该去哪个网站 浏览:972
看门狗2游戏文件名 浏览:105
js中判断是否包含字符串中 浏览:363
查看网络并设置连接 浏览:624
win10玩奇迹掉线 浏览:305
爱思助手电脑版在哪个网站下 浏览:814
文件夹排序怎么按顺序 浏览:54
飞猪app有什么功能 浏览:593
求生之路2开服破解文件 浏览:42
javaforeach输出数组 浏览:851
编程bug怎么修改 浏览:630
苹果5s屏修一下多钱 浏览:523
java获取上传文件名 浏览:156
网站添加微博 浏览:593

友情链接