给你个写入的类,查询数据自己如果能搞定最好了
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中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)