最近做了一个功能,由于每逢年过节,要求导入客户资料的客户越来越多。现在客户资料超过了800万,查询速度明显下降,甚至无法忍受。既然有些客户只是为了给这些导入的客户发送短信,而不运用其他功能,那就直接给你手机号码的了。
首先要选择给哪个商户导入他提供的手机号码:
页面:
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<%
String departmentSid=String.valueOf(request.getAttribute("departmentSid"));
int corpSid=(Integer)request.getAttribute("corpSid");
session.setAttribute("corpSid",corpSid);
session.setAttribute("departmentSid",departmentSid);
session.setAttribute("pageContext",pageContext);
%>
<script type="text/javascript">
//得到文件路径的js方法,目前没有用到此方法
function getValueIE8(){
var ip = document.getElementById("filename");
ip.select();
alert(document.selection.createRange().text);
document.getElementById("fileNamePath").value=document.selection.createRange().text;
}
</script>
</2Ftr>
<tr><td><input type="submit" name="btnSubmit" value=" 上 传 " class="DefaultButton"/></td></tr>
</table>
</form>
%6ȷ手机号码--选择txt文件</caption>
<tr><td><font class="FieldItem">选择txt文件<font class="NotNull">(*必填项) 必须上传txt文件,而且每个手机号码占一行,大小不要超过50M</font></font><br/>
<input type="file" name="filename" id="filename" _dataType="string"></td><td></td>
</tr>
<tr><td><input type="submit" name="btnSubmit" value=" 上 传 " class="DefaultButton"/></td></tr>
</table>
</form>
</body>
</html>
方法:
public ModelAndView selectTxt(HttpServletRequest request
,HttpServletResponse response) {
//String departmentSid =request.getParameter("departmentSid");
String departmentSid = StringUtils.varFormat(request.getParameter("departmentSid"));
Department department=departmentDao.getById(departmentSid);
if(departmentSid == null)
{
request.setAttribute("message", MSG_NO_DATA_FOUND);
return new ModelAndView(failView);
} else
{
Company company=department.getCompany();
request.setAttribute("corpSid", company.getCorpSid());
request.setAttribute("departmentSid", departmentSid);
return new ModelAndView(viewPage);
}
}
接着是上传文件:
public ModelAndView uploadTxt(HttpServletRequest request
,HttpServletResponse response) {
//PageContext pageContext=null;
String departmentSid=String.valueOf(request.getSession().getAttribute("departmentSid"));
int corpSid=(Integer)request.getSession().getAttribute("corpSid");
String account="";
Company company =companyDao.getById(corpSid);
Department department =departmentDao.getById(departmentSid);
if(null==company){
request.setAttribute("message", MSG_NO_DATA_FOUND);
return new ModelAndView(failView);
}else{
account=company.getCorpAccount();
}
//System.out.println("departmentSid="+departmentSid+",corpSid="+corpSid);
//String departmentSid="";
//int corpSid=0;
String fileName = "";
//String departmentSid = "";
//Mysql 连接初始化
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
fileUpload.setSizeMax(50*1024*1024);
List fildItems = fileUpload.parseRequest(request);
Iterator fildItem = fildItems.iterator();
int count=0;
FileItem fi;
while(fildItem.hasNext())
{
fi = (FileItem)fildItem.next();
//String name=fi.getFieldName();
//普通表单域
if(fi.isFormField())
{
}
//文件表单
else if(!fi.isFormField())
{
String fileExcel = (new StringBuilder(String.valueOf(request.getSession().getServletContext().getRealPath("/")))).append("phoneTxt/").append(account+"/").toString();
File uploadDir = new File(fileExcel);
System.out.println("文件夹名称:"+uploadDir.getName());
long size=uploadDir.length();
//System.out.println("文件大小:"+size);
if(!(uploadDir.exists()))
{
uploadDir.mkdir();//创建目录!
}
String filePath = fi.getName();//获得文件绝对路径
System.out.println("文件名称:"+filePath);
int a=filePath.lastIndexOf("\\");
System.out.println("a="+a);
int b=filePath.lastIndexOf(".");
String fn=filePath.substring(b);//获取文件的后缀名
if(!fn.equals(".txt")){
request.setAttribute("message", "上传的文件格式不正确,请上传txt文件!");
return new ModelAndView(this.failView);
}
System.out.println("filePath="+filePath+",fn="+fn);
String f=DateUtils.getDate("yyyyMMddHHmmss");//以日期命名
try {
fi.write(new File((new StringBuilder(fileExcel)).append(f+fn).toString()));
fileName=fileExcel+f+fn;//获得文件的相对路径
String trueName=filePath.substring(a+1,b);
System.out.println("取代后缀名的txt:"+trueName);
boolean istrue=splitFile(10000,fileName,fileExcel,trueName,company,department);
if(!istrue){
request.setAttribute("message", "在分割文件或插入数据库记录时出错!");
return new ModelAndView(this.failView);
}
} catch (Exception e) {
e.printStackTrace();
return new ModelAndView(this.failView);
}
}
count++;
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
request.setAttribute("message", "文件上传过大,请选择小于50M的文件!");
return new ModelAndView(this.failView);
}
request.setAttribute("message",this.MSG_SUCCESS);
request.setAttribute("redirectUrl", requestUri+".do?method=list");
return new ModelAndView(this.successView);
}
在上传的过程中按行分割上传的文件:
private boolean splitFile(int rows,String sourceFilePath,String targetDirectoryPath,String fileName,Company company,Department department){
File sourceFile = new File(sourceFilePath);
File targetFile = new File(targetDirectoryPath);
boolean isContinue=true;
//获得文件名称
String trueName=fileName;
//获得公司,部门
int s=0;
if(!sourceFile.exists()||rows<=0||sourceFile.isDirectory()){
System.out.println("源文件不存在或者输入了错误的行数");
return isContinue;
}
if(targetFile.exists()){
if(!targetFile.isDirectory()){
System.out.println("目标文件夹错误,不是一个文件夹");
return isContinue;
}
}else{
targetFile.mkdirs();
}
try{
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
BufferedWriter bw = null;
String str = "";
String tempData = br.readLine();
int i=1;
int count=0;
while(tempData!=null){
str += tempData+"\r\n";
File file=new File(targetFile.getAbsolutePath()+"/"+s+"_"+sourceFile.getName());
if(i%rows==0){
bw = new BufferedWriter(new FileWriter(file));
bw.write(str);
bw.close();
str = "";
s += 1;
count++;
}
i++;
tempData = br.readLine();
}
System.out.println("共循环"+count+",i="+i);
if((i-1)%rows!=0){
File file=new File(targetFile.getAbsolutePath()+"/"+s+"_"+sourceFile.getName());
bw = new BufferedWriter(new FileWriter(file));
bw.write(str);
bw.close();
br.close();
s += 1;
}
System.out.println("文件分割结束,共分割成了"+s+"个文件");
}catch(Exception e){
e.printStackTrace();
}
boolean isTrue=insertData(trueName,sourceFile.getName(),targetFile.getAbsolutePath(),company,department,s);
if(!isTrue){
isContinue=false;
}
return isContinue;
}
分享到:
相关推荐
在Java编程中,读取TXT文件并将其内容存入数据库是一项常见的任务,特别是在数据处理、日志分析或者导入批量数据的场景下。以下是一个详细的知识点解析,涵盖了如何使用Java来实现这一操作。 1. **读取TXT文件** -...
在Java编程中,处理大容量文本文件是一项挑战,因为传统的逐行读取方式可能会消耗大量内存,导致程序崩溃。为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行...
本案例“文件上传及入库”聚焦于如何使用SSM(Spring、SpringMVC和MyBatis)框架来实现文件上传,并将文件信息存储到数据库中。下面将详细介绍这一过程的关键知识点。 首先,`SSM`是Java Web开发中的主流框架组合,...
标题 "java 读取Ftp指定位置的文件解析并入库" 涉及到的是使用Java编程语言通过FTP(File Transfer Protocol)协议从远程服务器上下载文件,然后对下载的文件进行解析,并将解析得到的数据存储到数据库中。...
总结起来,Java实现“上传Excel并解析入库”涉及的关键技术包括文件上传(如Spring MVC的MultipartFile)、Excel解析(如Apache POI)以及数据库操作(JDBC或ORM)。通过熟练掌握这些技术,你可以构建出高效、稳定的...
shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形,每一个都有他们各自的属性。 shape文件由ESRI开发,一个...
读取文件入库,两种方式 资源中内容包括两种功能:1.把数据库的数据,通过sql查询生成txt文件,存放到指定路径;(CreateFileToPathMain类,java调用shell脚本方式) 2.读取指定路径下的文件数据,插入到指定表中。...
演示操作使用MMD管理平台、CRD报表设计器和DPS管理平台,对数据文件进行上传、后台进行数据提取、整理,将数据结构化并存入数据库。
随着科技的进步和智能化技术的发展,自动寻迹自动入库小车项目应运而生,为初学者提供了一个绝佳的学习平台。这个项目不仅集成了电子工程、嵌入式系统、机械工程和自动化控制等多个领域的知识,还能够激发学习者对于...
因数据库同步太耗网络资源,同步数据不多可采取产生SQL同步的方式,这个小程序,可以定时读取指定SQL文件连接数据库并执行的功能,配合ftp下载或推送就可实现同步。 采用ADO方式连接,config.ini文件可设置连接字符...
综上所述,"asp上传excel并读取入库"涉及了文件上传、Excel数据读取、数据预处理、数据库操作以及错误处理等多个知识点。通过掌握这些技能,开发者可以构建出强大的数据导入系统,有效提升数据管理的效率。
3. **读取Excel文件**:使用ADO(ActiveX Data Objects)的Recordset对象,可以连接到Excel文件并读取数据。首先,创建一个ADODB.Connection对象连接到Excel文件,然后打开一个ADODB.Recordset对象来获取数据。数据...
`FetchDir.java`可能是一个用于读取本地文件目录,获取待上传至数据库的Blob文件的工具类。此类通常会包含方法,如`listFiles()`,遍历指定目录下的所有文件,准备进行数据库操作。 `BlobClobExample.java`则可能是...
用户通过这些文件可以进行游戏的入库操作,但通常这个过程是由Steam客户端自动处理的。 入库操作是将游戏添加到用户的Steam库中的过程,通常是购买游戏后自动完成的。然而,有时用户可能会遇到入库问题,这时手动...
本教程将详述如何使用Delphi编程语言结合Excel文件来读取特定列的信息,并将其高效地写入Oracle数据库。首先,我们需要理解Delphi、Excel文件处理以及Oracle数据库的基本概念。 Delphi是一种基于Object Pascal的...
使用java实现了读取一个文件夹并将文件中的图片读取到数据库中存储,这是一个简单的示例代码。
logs中就是为我们日常记录的日志文件,你要对起进行分析记录入表。 这些日志文件名都是有一定规则每小时生成一个。拿附件中的文件来说access_log.2009-04-30.17.log 表示2009年4月30日17时的数据。 记录到数据里对应...
2. 读取节和键值对:利用LabVIEW的“读取文本文件”VI,读取文件内容。然后,通过字符串操作(如分割字符串)来解析出节名和键值对。 3. 存储数据:将读取的键值对存储到适当的变量或数据结构中,如簇或数组。 写入...
这个名为“钢筋材料入库明细账(自动计算表)”的文件,显然是一款专为建筑工程行业设计的电子表格,它利用了Microsoft Excel的功能来简化钢筋材料的库存管理。 Excel是一款强大的电子表格软件,能够进行数据组织、...