SQL Server:从VB.NET存储数据
我有个大问题。我必须在SQL Server数据库中存储日期时间和值 我写了一个网站,其中包含一个带有条目的表格 一个条目包含:日期、时间和值 例如: Entry A : -> 01.01.2014 - 07.06.2014 , 00:00 - 07:15 , Value: 450 Entry A : -> 01.01.2014 - 07.06.2014 , 07:30 - 15:30 , Value: 230 Entry A : -> 01.01.2014 - 07.06.2014 , 15:45 - 23:45 , Value: 300 Entry B : -> 01.01.2014 - 07.06.2014 , 00:00 - 02:15 , Value: 130 Entry B : -> 01.01.2014 - 07.06.2014 , 02:30 - 10:45 , Value: 250 Entry B : -> 01.01.2014 - 07.06.2014 , 11:00 - 23:45 , Value: 340 Entry C ... 对于范围内的每个datetime,每个步骤在15分钟内存储一个值: 例如,数据库应如下所示: 01.01.2014 00:00:00 | 450 | Entry A 01.01.2014 00:15:00 | 450 | Entry A .. .. 01.01.2014 07:15:00 | 450 | Entry A 01.01.2014 07:30:00 | 230 | Entry A 01.01.2014 07.45:00 | 230 | Entry A .. .. 01.01.2014 15:30:00 | 230 | Entry A 01.01.2014 15:45:00 | 300 | Entry A 01.01.2014 16:00:00 | 300 | Entry A .. .. 01.01.2014 23:45:00 | 300 | Entry A 01.01.2014 07:30:00 | 300 | Entry A .. .. 01.01.2014 07:15:00 | 230 | Entry A 01.01.2014 07:30:00 | 230 | Entry A .. .. 02.01.2014 ... 每个条目和每天都相同,直到结束 我认为问题在于插入太多。五个月以上,每天,每15分钟三次参赛 我写了两个脚本,都在工作。但是保存条目需要很长时间 脚本1:我已经在VB中直接执行了SQL语句 Dim cmd As DbCommand=新SqlCommand cmd.CommandType=Data.CommandType.Text Temp2=DateTime.ParseDateStart++TimeStart Temp3=DateTime.ParseDateBegin++TimeBeginSQL Server:从VB.NET存储数据,sql,sql-server,vb.net,stored-procedures,common-table-expression,Sql,Sql Server,Vb.net,Stored Procedures,Common Table Expression,我有个大问题。我必须在SQL Server数据库中存储日期时间和值 我写了一个网站,其中包含一个带有条目的表格 一个条目包含:日期、时间和值 例如: Entry A : -> 01.01.2014 - 07.06.2014 , 00:00 - 07:15 , Value: 450 Entry A : -> 01.01.2014 - 07.06.2014 , 07:30 - 15:30 , Value: 230 Entry A : -> 01.01.2014 - 07.06.201
虽然Temp2伪代码抱歉,我可以告诉你怎么走,但我没有时间编写它
foreach line ...
date = first date+time
enddate = second date+time
while date >= enddate
insert into db (please use Parameters)
date increment by 15 minutes
我刚刚又用CTE试过了。下面的代码是我的解决方案,非常有效。 现在我只需要编写一个过程并传递参数 感谢大家的阅读和支持
declare @StDate datetime = '01/01/2013 00:00.000'
declare @Enddate datetime = '07/07/2043 00:00.000'
declare @stime datetime = '00:00:00'
declare @etime datetime = '23:45:00'
declare @value as int = 387
declare @id as int = 999
;with cte as
(
select DATEADD(MINUTE,DATEDIFF(Minute,0,@stime),0) as Stime
union all
select DATEADD(MINUTE,15,Stime) from cte where Stime < @etime
), cte2 as (
select DATEADD(MONTH,DATEDIFF(MONTH,0,@StDate),0) as Sdate
union all
select DATEADD(day,1,SDate) from cte2 where SDate < @Enddate
)
Insert into [dbo].[_DV_Prognose_Werte_Temp](pr_id,prognosen_Nummer,zeitstempel,[time],leistungsprognose,nvv) (select '1','1', Combined = CAST(SDate AS DATETIME) + CAST(stime AS DATETIME),stime, @value,'2' from cte cross join cte2)
OPTION (maxrecursion 0)
不明白你到底想要什么?在这种情况下,我需要发送30000次以上的查询,我需要找出如何更快地保存数据。在这种情况下,在我存储所有数据之前,网站超时。每天都被划分为不同的时间段,我必须用每天的值存储这些不同的时间段。在这种情况下,从2014年1月1日到2014年6月7日-00:00到07:15,值为400。这意味着,每天-00:00到07:15时钟的值为400。在休息时间段07:30-15:30和15:45-23:45中还有一个值。一步一步地存储所有数据需要很多时间。网站超时了哪一位速度慢?你有分析过吗?此外,您的SQL Server是本地的还是远程的,即网络延迟是一个问题;您有任何聚集索引吗?还有,为什么要尝试在INSERT命令上执行ExecuteReaderr?我通常希望您执行ExecuteOnQuery,因为所写的插入不会向客户端返回任何行。这是一个缓慢的解决方案,例如,从2014年1月1日到2014年6月7日有157天。一个条目有15072个插入项。看,每天都分为不同的时间段。在我的示例中,从00:00-07:15到07:30-15:30和15.45-23:45,这用于每天的乘法条目和乘法值。在最坏的情况下,我有20个条目,范围从半年多到每天被划分为不同的时间范围。这将是超过200000条SQL语句,其中Insert INTO还剩下两个选项:第一:也可以从代码中进行大容量插入,或者以TSQL过程的形式写入。我以MS-SQL服务器的形式读取SQL Server标记。您可以在此处找到它: