社区
Java SE
帖子详情
从文本文件导入数据到数据库的问题
fingertiploneliness
2005-06-30 10:48:41
想做一个定时任务,在每天的某个时间将文本文件中的数据导入的某一个表中。
我的问题是如果这个文件是每天追加记录的(每天有新的数据加入到文件尾部)
如何判断每次该从哪里读取,如何跳过已经读过的行?
或者类似的问题该如何处理比较好,欢迎讨论
...全文
296
17
打赏
收藏
从文本文件导入数据到数据库的问题
想做一个定时任务,在每天的某个时间将文本文件中的数据导入的某一个表中。 我的问题是如果这个文件是每天追加记录的(每天有新的数据加入到文件尾部) 如何判断每次该从哪里读取,如何跳过已经读过的行? 或者类似的问题该如何处理比较好,欢迎讨论
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fingertiploneliness
2005-06-30
打赏
举报
回复
感谢大家的回复
to zhutouzip(醒了的鸟) :并不想针对具体的数据库,比如用Sql Server的BCP或者其他数据库的类似过程,而是想用class实现,比如用运行一个TimerTask。
-------
如果此application的数据来自其他的系统,可能每天一个新的ascii文件(日期相关的文件名)。也可能是同一个文件,总是把数据添加到最后,这个文件是copy或者upload过来的,每次覆盖原来的文件,提供的文件不保证每次添加都设置标志的(如果每次更新都添加标志位/行 当然好)
bluejingling
2005-06-30
打赏
举报
回复
请给我>100分的分数
bluejingling
2005-06-30
打赏
举报
回复
每天的日期时间是不一样的。
那么你放一个日期时间标志,下次读取时先找到这个标志。
比如 #20050629#
要注意的是,要统一日期格式为yyyymmdd或其它格式,以免出现格式不对而定位错误。
oswicer
2005-06-30
打赏
举报
回复
建议你把每天的数据各自放在一个txt里,就不存在
"如何判断每次该从哪里读取,如何跳过已经读过的行?"
的问题了
飞行的兔子
2005-06-30
打赏
举报
回复
最好指定一个具体的数据库,让大家讨论!
期待好的结果!
TonyZeus
2005-06-30
打赏
举报
回复
是否可以将表清空一下,重新全部导入呢?这只是瞬间的一种想法,可能不是太好
oyljerry
2005-06-30
打赏
举报
回复
读取文件到末尾,然后append
说好不能打脸
2005-06-30
打赏
举报
回复
long = skip(long) 这是InputStream的跳转方法,注意参数是需要跳过的长度,返回值是实际跳过的长度
seek(long) 这是RandomAccessFile的跳转方法,直接指定要跳过长度就可以了
说好不能打脸
2005-06-30
打赏
举报
回复
先就楼主提出的问题进行解决:
解决方案一:
使用RandomAccessFile类和OutputStream接口(不要告诉我你不会用,如果真不会就该再补一补),他们都提供流与字节的指针定位方法skip(),用这种方法就可以很容易的找到要读取信息的指定位置,从而跳过以读信息。
解决方案二:
在文件中的已读部分的末尾增加一个标记如下:
*********************
******************************<readed>
而新写入的部分放在标记之后如下:
*********************
******************************<readed>&&&&&&&&&&&&&&&&&&&&&&&&
当又一次读取文件后,改变标记位置。
就我个人而言我会使用第一种方式,我这里有示例代码,但在另外一台机器上,如果需要我可以贴出方法一的示例代码。但两种方式都比较容易实现看楼主你怎么选。
我还想提一提我的个人意见,我觉得完全没有必要把文件内容写入数据库,只需要记录文件地址就可以了:步骤大致如下:
1、在确定的时间运行日志生成器,生成相应的日志文件,为了保证文名不会重名我们使用时间的long表示来作为文件名,如:200343853746.TXT
2、将文件地址记录与数据库,而非文件内容。
3、如果楼主真的想组合这些文件,那也没关系,用InputStream组合这些文件就可以了。
yanloveyan2004
2005-06-30
打赏
举报
回复
根据日期生成一个文本,存放当天的,比如20050630.txt存放今天的数据,20050701.txt存放明天的数据!
eureka0891
2005-06-30
打赏
举报
回复
我觉得每天把文件名设置成按日期的就行了,
没有一定的规则是不好的,
不遵从这个规则当然不导入这个文件,这是没办法的事情
laughsmile
2005-06-30
打赏
举报
回复
1.你可以在定时导入的Timer中加一个TimerTask,这个TimerTask每天晚上12点的时候读取文件。使用
RandomAccessFile myFile = new RandomAccessFile(String YourFilePath, String mode);读取文件,得到文件的长度myFile.length()。保存此值到一个static变量yesterdayMyFileLen中.
2.执行定时导入的时候,从yesterdayMyFileLen中读出昨天文件长度,
RandomAccessFile myFile = new RandomAccessFile(String YourFilePath, String mode);
定位文件
myFile.seek(yesterdayMyFileLen);
从此位置读到末尾
.....
long filePointer = 0;
long length = myFile.length();
String strLine ="";
while (filePointer < length) {
strLine = myFile.readLine();
System.out.println(strLine);
filePointer = myFile.getFilePointer();
}
rower203
2005-06-30
打赏
举报
回复
text可建ODBC源,
在结构上加入写入日期字段
导入时加入条件Where DateField = Today即可
ll42002
2005-06-30
打赏
举报
回复
先判断有没有时间标识,有,通过时间标识判断;
没有,将数据库表导出文件(可以是特定格式的),将两个文件作内容对比(现在比较高效的算法我知道的有B-tree),相同的记录删除,不同记录保留;
解析第二步中得到的文件,用批处理添加到数据库。
xiangxyz
2005-06-30
打赏
举报
回复
做一个标记,每次读完之后在最后写一个标记。
读的时候,找到标记,删除之,并从下一行开始写进数据库。
grapepaul
2005-06-30
打赏
举报
回复
用java实现性能不好
bxh2dai
2005-06-30
打赏
举报
回复
我觉得 bluejingling(总是想起蓝精灵) 说的楼主应该考虑:
有三点:
1、把每天的数据都按照时间来存放,变于查看。
2、省去了处理“如何判断每次该从哪里读取,如何跳过已经读过的行”的烦恼。
3、如果把数据都放在同一个文件里,文件会变得很庞大,不便于查看,而且文件不小心丢失,那可是全部数据,呵呵~!
文本
导入
数据
到oracle_如何将
文本文件
导入
到Oracle
数据
库
中 ?
展开全部将
文本文件
导入
Oracle中需要用sqlloader的方式32313133353236313431303231363533e4b893e5b19e31333337626261。1、在
数据
库
中创建相应的表。如,
文本文件
内容为:createtabletest(idint,namevarchar2(10),...
从
文本文件
导入
数据
到
数据
库
表
Oracle最近一直在使用常用
数据
库
的
数据
导入
,这里把已经用到的
导入
命令先简要列举一下:SQL Server
数据
导入
不介绍每一个option的具体意义,如果你用到了,请直接MSDN查看具体option的意义,此处不再赘述!...
用java实现从
文本文件
批量
导入
数据
至
数据
库
今天同事让我准备一个项目的...用循环实现比较麻烦,于是我想到了将记录从
文本文件
导入
至
数据
库
(其实SQLServer可利用sql语句实现
导入
xls或txt文件,在这就不具体说明了),写个简单的具有解析
文本文件
并将解析结果插入
怎么将
文本文件
导入
数据
库
怎么将
文本文件
导入
数据
库
用java实现从txt
文本文件
批量
导入
数据
至
数据
库
今天同事让我准备一个项目的...用循环实现比较麻烦,于是我想到了将记录从
文本文件
导入
至
数据
库
(其实SQLServer可利用sql语句实现
导入
xls或txt文件,在这就不具体说明了),写个简单的具有解析
文本文件
并将解析结果插入
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章