java项目,我上传dbf文件,解析文件数据保存到数据库里,数据量太大,速度太慢

java项目,我上传dbf文件,解析文件数据保存到数据库里,数据量太大,速度太慢,第1张

您好,
ResultSet得相关参数代码片断,下面的代码对类型判断和转换还不全面,如果还有其他字段请自行添加
Java代码
try {
ResultSetMetaData meta = rsgetMetaData();
int columnCount = metagetColumnCount();
strutName = new String[columnCount];
strutType = new byte[columnCount];
rslast();
int itemCount = rsgetRow();
rsfirst();
data = new Object[itemCount][columnCount];
for (int i = 1; i <= columnCount; i++){
int type = (byte) metagetColumnType(i);
//2是BigDecimal
if(type == 2){
strutType[i-1] = DBFFieldFIELD_TYPE_N;
}
//12是String
else if(type == 12){
strutType[i-1] = DBFFieldFIELD_TYPE_C;
}
//91是javautilDate
else if(type == 91){
strutType[i-1] = DBFFieldFIELD_TYPE_D;
}
strutName[i-1] = metagetColumnName(i);
}
for (int i = 0; rsnext(); i++){
for (int j = 0; j < columnCount; j++){
Object da = rsgetObject(j+1);
if(da instanceof BigDecimal){
Double d = DoubleparseDouble(datoString());
data[i][j] = d;
}else{
data[i][j] = da;
}
}
}
}catch (Exception e){
eprintStackTrace();
}finally{
rs = null;
}

上面采用的是传统方法进行导出dbf文件,如果大数据量导出时,就要先将文件生成到服务器端,然后从response里拿输入流,将刚生成的文件写到客户端,也就是多一个文件流写入的过程。

将SQL数据库表导出为DBF文件。方法步骤如下:

         1、打开SQL企业管理器,找到服务器下对应数据库的表,右键 所有任务-》导出数据
         2、下一步之后选择数据源时默认,目的数据源是选择DBASE III ,文件名出填写需要导出的目录即可
         3、继续下一步即可。

ml页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。
2在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(示例如下)
<%
responsesetContentType(fileminitype);
responsesetHeader("Location",filename);
responsesetHeader("Cache-Control", "max-age=" + cacheTime);
//filename应该是编码后的(utf-8)
responsesetHeader("Content-Disposition", "attachment; filename=" + filename);

responsesetContentLength(filelength);
OutputStream outputStream = responsegetOutputStream();
InputStream inputStream = new FileInputStream(filepath);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStreamread(buffer)) != -1) {
outputStreamwrite(buffer, 0, i);
}
outputStreamflush();
outputStreamclose();
inputStreamclose();
outputStream = null;
%>
3既然是JSP的话,还有一种方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。
servlet端示例
public void service(>如下代码来自我自编的测试程序
procedure TForm1Button1Click(Sender: TObject);
begin
try
ADOConnection1ConnectionString:='Provider=MicrosoftJetOLEDB40;Data Source='+ExtractFilePath(ApplicationEXEName)+
'emptymdb;Jet OLEDB:Database Password=';
ADOConnection1Connected:=true;
except
showmessage('无法打开数据库,请:1确认文件''zzglxtmdb''在'+'下;2运行该目录下的mdac_typ25exe安装MDAC数据库驱动!!');
exit;
end;
// ADOConnection1Execute('insert into szbmk select from 6001szbmk in ''D:\dbf和acess相互转换'' ''dbase 50;'' order by bmh')
ADOConnection1Execute('select into szbmk from 6001szbmk in ''D:\dbf和acess相互转换'' ''dbase 50;'' order by bmh')
end;
procedure TForm1Button2Click(Sender: TObject);
var
sql:string;
begin
try
ADOConnection1ConnectionString:='Provider=MicrosoftJetOLEDB40;Data Source='+ExtractFilePath(ApplicationEXEName)+
'emptymdb;Jet OLEDB:Database Password=';
ADOConnection1Connected:=true;
except
showmessage('无法打开数据库,请运行该目录下的mdac_typ25exe安装MDAC数据库驱动!!');
exit;
end;
sql := 'SELECT INTO szbmk in ''D:\dbf和acess相互转换'' ''dbase 50;'' FROM szbmk';
ADOConnection1Execute(sql);
end;
或是试试这个:
直接用BATCHMOVE控件,在BDE控件里的

你这个思路可以,dbf的格式非常简单,基本就是将数据顺序放在文件中,你随便搜搜就能搜到,sqlloader的使用也很简单,就几条语句就可以了,网上搜一搜吧。
你也可以用java拼接insert语句插入数据库,这样不需要你能远程执行数据库服务器的脚本,但是性能不如你的想法。
你也可以编写plsql程序直接将dbf读取,拼接为insert语句,效率跟sqlloader差不多

一般是在F:\app\你的计算机名\product20\dbhome_1\jdbc\lib。
orade数据库:所有的关系型数据库存储数据的集合就是磁盘中的文件。Oracle 数据库其实就是一组文件的集合。Oracle 数据库分别由:数据文件、控制文件、日志文件所构成。 11数据文件(DBF): 数据文件是一个二进制文件,是用于保存用户应用程序数据和 Oracle 系统内部数据的文件,这些文件在 *** 作系统中就是普通的 *** 作系统文件。Oracle 在创建表空间的同时会创建数据文件。 12控制文件(CTL):控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等信息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法 *** 作。 13日志文件(LOG):日志文件在 Oracle 数据库中分为重做日志(Redo Log File)文件和归档日志文件两种。重做日志文件是 Oracle 数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库 *** 作过程。用于备份和还原数据库,以达到数据库的最新状态。

★常见的文件后缀名
ACA:Microsoft的代理使用的角色文档
acf:系统管理配置
acm:音频压缩管理驱动程序,为Windows系统提供各种声音格式的编码和解码功能
aif:声音文件,支持压缩,可以使用Windows Media Player和QuickTime Player播放
AIF:音频文件,使用Windows Media Player播放
AIFC:音频文件,使用Windows Media Player播放
AIFF:音频文件,使用Windows Media Player播放
ani:动画光标文件扩展名,例如动画沙漏。
ans:ASCII字符图形动画文件
arc:一种较早的压缩文件,可以使用WinZip,WinRAR,PKARC等软件打开
arj:压缩文件。可以使用WinZip,WinRAR,PKARC等软件打开
asf:微软的媒体播放器支持的视频流,可以使用Windows Media Player播放
asp:微软的视频流文件,可以使用Windows Media Player打开
asp:微软提出的Active Server Page,是服务器端脚本,常用于大型网站开发,支持数据库连接,类似PHP。可以使用Visual InterDev编写,是目前的大热门
asx:Windows Media 媒体文件的快捷方式
au:是Internet中常用的声音文件格式,多由Sun工作站创建,可使用软件Waveform Hold and Modify 播放。Netscape Navigator中的LiveAudio也可以播放au文件
avi:一种使用Microsoft RIFF规范的Windows多媒体文件格式,用于存储声音和移动的
bak:备份文件,一般是被自动或是通过命令创建的辅助文件,它包含某个文件的最近一个版本,并且具有于该文件相同的文件名
bas Basic:语言源程序文件,可编译成可执行文件,目前使用Basic开发系统的是Visual Basic
bat:批处理文件,在MS-DOS中,bat文件是可执行文件,有一系列命令构成,其中可以包含对其他程序的调用
bbs:电子告示板系统文章信息文件
bfc:Windows的公文包文件
bin:二进制文件,其用途依系统或应用而定
bmp:Bitmap位图文件,这是微软公司开发Paint的自身格式,可以被多种Windows和Windows NT平台及许多应用程序支持,支持32位颜色,用于为Windows界面创建图标的资源文件格式。
c:C语言源程序文件,在C语言编译程序下编译使用
cab:Microsoft制订的压缩包格式,常用于软件的安装程序,使用Windows自带的实用程序,Extractexe可以对其解压缩,WinZip,WinRAR等都支持这种格式
cal:Windows 中的日历文件
cdf:Internet Explorer的频道文件
cdr:CorelDraw中的一种图形文件格式,它是所有CorelDraw应用程序中均能够使用的一种图形图像文件格式
cdx:索引文件,存在于Dbase,Foxbase,Foxpro系统软件环境下
cfg:配置文件,系统或应用软件用于进行配置自己功能,特性的文件
chm:编译过后的HTML文件,常用于制作帮助文件和电子文档
clp:在Windows下剪贴板中的文件格式
cmd:用于Windows NT/2000的批处理文件,其实与BAT文件功能相同,只是为了与DOS/Windows 9x下的BAT有所区别
cmf:声卡标准的音乐文件,FM合成器等可以回放
cnf:NetMeetting会议连接文件
cnt:联机帮助文件目录索引文件,通常和同名的hlp文件一起保存
col:由Autodesk Animator,Autodesk Animator Por等程序创建的一种调色板文件格式,其中存储的是调色板中各种项目的RGB值
com:DOS可执行命令文件,一般小于64KB
cpl:控制面板扩展文件,Windows *** 作系统使用
cpp:C++语言源程序,非常强大的语言,在各种平台中都有相应的开发系统
crd:Windows中的卡片文件
crt:用于安全方面的证书认证文件
cur:Windows下的光标资源文件格式,可用光标编辑软件编辑
css:Text/css文件
dat:数据文件,在应用程序中使用
dat:VCD中的图象声音文件,VCD播放软件可调用,或是通过VCD机播放
dbf:数据库文件,Foxbase,Dbase,Visual FoxPro,等数据库处理系统所产生的数据库文件
dcx:传真浏览文档文件
ddi:映象文件,DUP,HD,IMG等工具可展开
dev:设备驱动程序
dib:设备无关位图文件,这是一种文件格式,其目的是为了保证用某个应用程序创建的位图图形可以被其它应用程序装载或显示一样
dir:目录文件
dll:Windows动态连接库,几乎无处不在,但有时由于不同版本DLL冲突会造成败各种各样的问踢
doc:是目前市场占有率最高的办公室软件Microsoft Office中的字处理软件Word创建的文档
dos:Windows保留的MS-DOS的某些系统文件
dot:Microsoft Word的文档模板文件,通过模板可以简化一些常用格式文档的创建工作,而且可以内嵌VBA程序来实现某些自动化功能
drv:设备驱动程序文件,用在各种系统中
dwg:AutoCAD的图纸文件,也是许多绘图软件都支持的格式,常用于共享数据
dxb:AutoCAD创建的一中图形文件格式
dxf:图形交换格式,一种计算机辅助设计的文件格式,最初开发用来与AutoCAD一起使用,以便于图形文件在应用程序之间的传递,它以ASCII方式储存图形,在表现图形的大小方面十分精确
der:Certiticate文件
dic:Txt文件
emf:由Microsoft公司开发的Windows 32位扩展图元文件格式,其总体设计目标是要弥补在Microsoft Windows 31(Win16)中用的wmf文件格式的不足,使得图元文件更加易于使用
eps:用PostScript语言描述的一种图形文件格式,以文本文件保存,在PostScript图形打印机上能打印出高品质的图形图象,最高能表示32位图形图象
err:编译错误文件,存在于Dbase,Foxbase,Foxpro系列软件环境下
exe:可执行文件,虽然后缀名相同,但具有不同的格式和版本
exp:3DS使用的显示卡驱动程序
exc:Txt文件
flc:Autodesk Animator和Animatorpro的动画文件,支持256色,最大的图象象索是6400064000,支持压缩,广泛用于动画图形中的动画序列,计算机辅助设计和计算机游戏应用程序
fnd:保存的搜索结果
fon:点阵字库文件
for:Fortran语言程序
fot:指向字体的快捷键
fp: 配置文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下
fpt:备注字段文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下
frt:报表文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下
frx:报表文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下
fxp:编译后的程序,存在于Dbase,Foxbase,Foxpro系列软件的环境下
gif:在各种平台的各种图形处理软件上均能够处理的,经过压缩的一种图形文件格式
grh:方正公司的图象排版文件
grp:Windows下的程序管理器产生的组窗口文件
goc:Gocserve
gra:MSGraphChart5
h: C语言源程序头文件
hlp:Windows应用程序帮助文件
hqx:Macintosh中使用BinHex将二进制文件编码为7位的文本文件,大多数Macintosh文件皆以hqx出现(bin极少使用),在Macintosh中,可使用StuffIt Expander对hqx解码,在Windows中可使用BinHex 13解码
ht: 超级终端
htm:保存超文本描述语言的文本文件,用于描述各种各样的网页,使用各种浏览器打开
html:同htm文件
icm:图象配色描述文件
ico:Windows中的图标文件,可以包含同一个图标的多种格式,使用图标编辑软件创建
idf:MIDI乐器定义
idx:索引文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下
iff:文件交换格式文件,这种文件格式多用于Amiga平台,在这种平台上它几乎可以存储各种类型的数据,在其它平台上,IFF文件格式多用于存储图象和声音文件
image:MAcintosh磁盘映象文件,常见于萍果机的FTP网点,在Macintosh中由Shrink Wrap处理
ime:Windows下的输入法文件
img:磁盘映象文件,用HD-COPY,WinImage等工具打开后可以恢复到一张磁盘上
inc:汇编语言包含文件,类似C/C++中的H文件
inf:Windows下的软件安装信息,Windows的标准安装程序根据此文件内的安装信息对软件,驱动程序等进行安装
ini:Windows中的初始化信息文件,已经用的不多了,新的应用程序将设置保存在系统的注册表中
jar:一种压缩文件,ARJ的新版本,不过不太流行,可以使用WinJar,Winrar等打开
jpeg:一种压缩文件,同jpg
jpg:静态图象专家组制订的静态图象压缩标准,具有很高的压缩比,使用非常广泛,可使用PhotoShop等图象处理软件创建
lnk:快捷方式,这个文件指向另一个文件,开始菜单的程序文件夹下每条项目都是一个LNK文件
log:日志文件,通常用来记录一些事件之类
lzh:一种古老的压缩文件,可以使用WinRAR打开
mac:Macintosh中使用的一中灰度图形文件格式,在Macintosh Paintbrush中使用,其分辨率只能是720567
mag :图形文件格式
mdb :Microsoft Access使用的数据库格式,是非常流行的桌面数据库
men :内存应用文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下
mid :音频压缩文件,曾经非常流行,不过在现在的软件中用的很少了
rle :一种压缩过的位图文件格式,RLE压缩方案是一种极其成熟的压缩方案,特点是无损失压缩,既节省了磁盘空间又不损失任何图像数据,但在打开这种压缩文件时,要花费更多时间,此外,一些兼容性不太好的应用程序可能会搭不开
rm :Windows下的RealPlayer所支持的视频压缩文件,网上非常流行的流式视频文件,很多实时视频新闻等都是采用这种格式的,不过,最新的Windows Media Video V8已经对其发起了强大的攻势
rmi :MIDI音序文件
rtf :丰富文本格式文件,以纯文本描述内容,能够保存各种格式信息,可以用写字版,Word等创建
sav :存档文件
scp :用于Windows系统中Internet拨号用户,自动拨号登录用的脚本文件,可避免手动登录时繁琐的键盘输入
scr :屏障保护文件
sct :屏幕文件
scx :屏幕文件
set :Microsoft备份集文件,用于保存要备份的内容,设置等信息
shb :指向一个文档的快捷方式
snd :Mac声音文件,Apple计算机公司开发的声音文件格式,被Macintosh平台和多种Macintosh应用程序所支持,支持某些压缩
sql:查询文件,在Dbase,Foxbase,Foxpro系列软件的环境下使用
svg :SVG可以算是目前最火热的图像文件格式了,它是基于XML由WorldWideWebConsortium联盟开发的,SVG是可缩放的矢量图形
svx :Amiga声音文件,Commodore所开发的声音文件格式,被Amiga平台和应用程序所支持,不支持压缩
swf :flash是Micromedia公司的产品,严格说它是一种动画编辑软件,实际上它是制作出一种后缀名为swf的动画,这种格式的动画能用比较小的体积来表现丰富的多媒体形式,并且还可以与HTML文件达到一种"水乳交融"的境界
swg:虚拟内存交换文件,由 *** 作系统使用
sys:系统文件,驱动程序等,在不同的 *** 作系统中有不同的定义


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13476236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-14
下一篇 2023-08-14

发表评论

登录后才能评论

评论列表(0条)

保存