java如何从数据库读取数据并写入txt文件!

java如何从数据库读取数据并写入txt文件!,第1张

数据查询出来放在list中,然后写入文件

给你个写入的类,查询数据自己如果能搞定最好了

FileWriter fileWriter=new FileWriter("c:\\Resulttxt");

int [] a=new int[]{11112,222,333,444,555,666};

for (int i = 0; i < alength; i++) {

fileWriterwrite(StringvalueOf(a[i])+" ");

}

fileWriterflush();

fileWriterclose();

上面例子中的a也可以是list

这样每次去读取上百万条数据,不崩掉才怪,

我的想法是,你分批去查,然后分批导出,

类似于分页,每1000 或者更多为一批

按批次去执行,然后做一个进度条,按有多少批次为进度数进行导出

这样应该会好很多

还可以做个缓存机制,按批次进行存储,下次拿数据就直接从缓存中获取

数据库的数据是数据库语言完成的。

mysql中 : select from 表名 limit 1000;

limit 用法就是从限制取的条数 另外如果你要实现取 第2-5条 可以是 limit 2,6; 我记得好像是 最大数字那条不取的,你可以去试试。

sqlserver中不大一样了:

select top 1000 from 表名

如果这要实现取2-6条 就要配合主键了。 用条件语句where id从什么时候开始取。

不是java定时读取,而是系统调度

比如你写了一个java程序,这个程序是读取文件,写到数据库中。那么这个程序怎么才能定时启动。是 *** 作系统调度的问题了。不是java的问题。所以要用 *** 作系统的调度。

如果在win服务器下,可以下一个cmd文件。文件中调用java程序,然后将cmd设置成每天几点执行

如果是linxu或者unix下,则使用crontab调度。

当然,如果你非要用java程序来调度。那么这个程序肯定要常驻内存,并且进行睡眠。这种方式没有意义。

不知道你要什么样的文本,文本中的内容是否是有格式的:

这里提供下思路,供参考:

1文本文件,基本上式字符格式的了,可以用Reader  io流

2如果是格式化的文本,可以按数据的长度读取,  readInt   readByte

3保存到数据库 当然用JDBC了,如果你读取出来封装成POJO了,也可以选择 OM框架

import javaioBufferedReader;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStreamReader;

/

  文件读取和写入数据库

  @author  樊云升

 

 /

public class FilesReader {

public FilesReader(){

}

/

  读取文件内容

  @param FILE

  @return

 /

public String re_content(String FILE){

String content="";

 try{   

             BufferedReader bufRead=new BufferedReader(new InputStreamReader(new FileInputStream(FILE)));   

             String  str;   

             while((str=bufReadreadLine())!=null){   

               content+=str+"\r\n";   

             }

 }catch(IOException ioe){

   ioeprintStackTrace();

 }

return  content;

}

/

  将特定字符写入数据库中(原来我写的是重写文件,你这里这里将content写入数据库就OK)

  @param path

  @return

 /

public boolean writeFile(String content){

try{

//数据库写入代码

                     }catch(Exception e){

  outclose();

  return false;

 }

return true;

}

public static void main(String[] args) {

String content=new FilesReader()re_content("D:\\AJAXhtm");

                new FilesReader()writeFile(content);

}

}

1建立数据库database,建立数据表student。

字段:

sid 学号 文本

sname 姓名 文本

ssex 性别 文本(2字节)

saddress 地址 文本

stel 电话 文本

2类代码

/

使用:

设置数据库路径、sql语句、最大返回行数,使用getHTMLTable()返回html表格形式的字符串

executeSQL(String,String)执行SQL语句返回一个对象,请自己根据SQL语句转换成具体对象

//////////////////////////////////////////////////////

import javasql;

public class ListTableArea{

private String sqlString;

private String databasePath;

private int top;

private Statement stat=null; //连接数据库

public void setSQL(String SQL){

sqlString=SQL;

}

public void setDatabasePath(String path){

databasePath=path;

}

public void setTop(int frontIndex){

top=frontIndex;

}

private void linkDatabase(){

String strurl = "jdbc:odbc:driver={Microsoft Access Driver (mdb)}; DBQ="+databasePath;

try {

ClassforName("sunjdbcodbcJdbcOdbcDriver");

Connection conn = DriverManagergetConnection(strurl,"","");

stat = conncreateStatement(ResultSetTYPE_SCROLL_INSENSITIVE, ResultSetCONCUR_UPDATABLE);

}catch(Exception e){

Systemoutprintln(e);

}

}

public Object executeSQL(String sqlSentence,String database){

Object r=null;

try{

setSQL(sqlSentence);

setDatabasePath(database);

linkDatabase();

r=statexecuteQuery(sqlString);

}catch(Exception e){

Systemoutprintln(e);

}

return r;

}

public void closeStatement(){

try{

statclose();

}catch(Exception e){

Systemoutprintln(e);

}

}

public String getHTMLTable(){

Statement sta=null;

String htmlTable=null;

Connection conn=null;

int width=100;

String strurl = "jdbc:odbc:driver={Microsoft Access Driver (mdb)}; DBQ="+databasePath;

try {

ClassforName("sunjdbcodbcJdbcOdbcDriver");

conn = DriverManagergetConnection(strurl,"","");

sta = conncreateStatement(ResultSetTYPE_SCROLL_INSENSITIVE, ResultSetCONCUR_UPDATABLE);

ResultSet rs=staexecuteQuery(sqlString);

ResultSetMetaData rsmd=rsgetMetaData();

int cols=rsmdgetColumnCount();

htmlTable=htmlTable+"<TABLE ALIGN=center BORDER=1>";

htmlTable=htmlTable+"<TR>";

for(int i=1;i<=cols;i++)

{

width=1200/cols;

htmlTable=htmlTable+"<TD ALIGN=center WIDTH="+width+">"+rsmdgetColumnLabel(i)+"</TD>";

}

htmlTable=htmlTable+"</TR>";

while(rsnext())

{

htmlTable=htmlTable+"<TR>";

for(int j=1;j<=cols;j++)

{

Object obj=(Object)rsgetObject(j);

if(obj==null) htmlTable=htmlTable+"<TD HEIGHT=20 WIDTH=100></TD>";

else

{

String area=objtoString();

if(arealength()>20) {area=areasubstring(0,17);area=area+"";}

htmlTable=htmlTable+"<TD ALIGN=center WIDTH="+width+">"+area+"</TD>";

}

}

htmlTable=htmlTable+"</TR>";

}

htmlTable=htmlTable+"</TABLE>";

connclose();

staclose();

} catch(Exception e){

Systemoutprintln(egetMessage());

}

return htmlTable;

}

}

3编写一个main()

例如:

public class App{

static public void main(String[] srge){

ListTableArea lta=new ListTableArea();

ltasetTop(10);

Object o=ltaexecuteSQL("INSERT INTO student(sid,sname,ssex,saddress,stel) VALUES('20060102\',\'曾凯\',\'男\',\'四川资中\',\'13888888888\')","D:\databasemdb");

//参数1是SQL语句,参数2是数据库路径

//插入了一条记录

int i=(int)o;

if(i==1) Systemoutprintln("插入成功1条");

}

}

以上就是关于java如何从数据库读取数据并写入txt文件!全部的内容,包括:java如何从数据库读取数据并写入txt文件!、java 从数据库中读取大数据、如何用java控制每次从数据库中读取1000条数据到List中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9357282.html

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

发表评论

登录后才能评论

评论列表(0条)

保存