首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

一个超奇怪的Insert插入表有关问题啊多谢大家

2012-03-17 
一个超奇怪的Insert插入表问题啊,谢谢大家大家好,我的意图是这样的,一个实时记录表table_real,一个历史记

一个超奇怪的Insert插入表问题啊,谢谢大家
大家好,我的意图是这样的,一个实时记录表table_real,一个历史记录表Table_His,两个表的字段是一样的,我想是定时把real表的内容全部插入到his表那里,我使用了以下这样的语句

insert into Table_his select * from Table_Real 
where table_real.datetime not in (select datetime from table_his)

这个很奇怪的情况是这样的,real里面有一个字段,名称是KWH(电度),是一直增加的,按时间一直增加的一个数值型,但是经过了一段时间,发现his历史记录中KWH的数值偶尔会比前面的要低,接着又恢复正常,如果用曲线表示出来的或,本来四一条一直往上的曲线,但是之间就会出现一种掉下来的值,这个实际是不可能的,后面的一定要比前面的大才是对的,毫无头绪,不知哪里写错了,55555

求助大家,谢谢,这个插入过程我是用一个线程来做的,不知会不会哪里问题,555555555555555555555

http://p.blog.csdn.net/images/p_blog_csdn_net/yenwell/EntryImages/20090617/error633808788340468750.jpg
那个曲线插图的地址,谢谢


[解决办法]
主要检查三个地方:

第一,real表中是否也有类型的情况,尽量把最近几天的real表的图形也显示出来看看;

第二,你的这个图形大概是从数据库中读取的记录吧,那就在数据库中找到出现问题处的记录看看,看KWH的数值到底是相同还是相近,可以看出些端倪;

第三,查看线程是否会有不同步的时候;
[解决办法]
从两人表中把那掉下来的几个时间点取出来分析一下!

看看是哪个表的问题,再来做下一步处理!
[解决办法]
估计问题出在现成,没有同步,导致数据错位或丢失等问题
[解决办法]
你检查一下,你的两个表结构是否一样.
[解决办法]
where table_real.datetime not in (select datetime from table_his) 
你不要用datetime来判断在不在?如果你只是想把table_real表里面但不在table_his表里面的数据插进table_his表里面,你可以用其它来判断,
用个主键来判断好一点
[解决办法]
不知道Table_real的更新机制,有可能是读取冲突,可以尝试一下延迟一秒,避免出现更新冲突的情况
nsert into Table_his select * from Table_Real 
where table_real.datetime not in (select datetime from table_his) and (table_real.datetime<=sysdate-1/24/60/60))
[解决办法]
每插一次,数据集重采一次,图重刷一次,看看
[解决办法]
线程没有LOCK吧,你把数据更新操作的前后都加上事务吧,这样可以保证数据准确性
[解决办法]
记录的时间密集度如何?会不会同一个时间点(按datetime字段的精度)会采集多次?
最好,在real表增加一个自动递增id字段,插入是以它(而不是现在的datetime字段)为判断依据
另外,not in是很不好的做法
[解决办法]
已经说过多少次了,在线程内用独立的ADOCN,否则主线程与子线程发生同时操作时,很可能就一个失败
[解决办法]
取数据的线程把取到的数据丢到一个队列里
而插入数据库的线程只要一个,它的工作就是判断队列里有没有数据,有则插入,没有则等待下一个检查周期
[解决办法]
你发现没有,那连续的几个低下来的线末端几乎都是平的。
[解决办法]
你这是组态软件里的数据吧,不知你用的是哪种组态软件,一般组态软件里也带了简单的SQL功能。
组态软件的更新可能很快的,一种是定时更新,一种是变化更新。
你这是明显的跟不上组态软件数据的更新了,漏了保存数据。
不能用你的那个条件语句,想其它办法。。。

热点排行