C#每月建新的SQL表,如何把每天得到的数据在每月初自动插入新的表中

chenjinliang1995 2017-01-09 10:09:22
每月新建表,表头以时间命名。时间具体到日。如何在每个月把数据插入到新表中,等到了下一个月再新建一个表,再把每天得到的数据插入到新表中
...全文
577 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
_iorilan 2017-01-14
  • 打赏
  • 举报
回复
学习一下SQL SERVER JOB的使用。
  • 打赏
  • 举报
回复
重复一下业务人员的简单需求,就来论坛求代码来了。 你先写出自己的设计,再问吧。
nikolaichow 2017-01-13
  • 打赏
  • 举报
回复
写个存储过程:

Create proc getTableName
@time datetime,
@tableName varchar(99) output   --返回的表名
as
begin
    --根据@time时间拼接字符串成您的表名,如YYYY_MM_DD_001
    set @tableName='YYYY_MM_DD_001'    --这个应该是根据@time拼接字符串形成
   --判断database中是否存在YYYY_MM_DD_001表,不存在则创建
   if object_id(@tableName,N'U') is null
   begin
      declare @sql varchar(max)
      set @sql='
       Create table '+@tableName+'(
          F1 varchar(max),
          ......
       )'
       print @sql   --你也可以打印出@sql语句查看是否正确
       exec (@sql)
   end
c#代码调用这个存储过程,你就能获取到当前时间对应的表名@tableName了,然后你在代码中实现数据的插入; 当然,你若可以将数据形成xml直接抛送给存储过程,由存储过程在上述sql后面直接解析xml插入新表那么效率更高
吉普赛的歌 2017-01-13
  • 打赏
  • 举报
回复
用分区表就可以了, 而且非常高效。 当前表是固定的, 每个月月头执行一次 旧数据 swith 到一个空的同结构的新表即可。 这个操作只需要不到1秒,而且非常简洁。
正怒月神 2017-01-10
  • 打赏
  • 举报
回复
维护计划,windowservice都可以
WordG 2017-01-10
  • 打赏
  • 举报
回复
引用 3 楼 chenjinliang1995 的回复:
主要是怎么让数据输入到新的表中,因为表名不一样,我该怎么写能让这个月的数据输入到这个月的表,等下个月又把下个月的数据输入到下个月的表
存储过程+事物 DECLARE tabname set tabname =getedate().tostring("YYYY_MM") 你这里是每月一个 create table tabname .......; insert into tabname ........;
  • 打赏
  • 举报
回复
Job作业,定时执行sql就行了 如果你觉得纯sql太难,就用quartz之类的作业框架写代码好了
chenjinliang1995 2017-01-09
  • 打赏
  • 举报
回复
主要是怎么让数据输入到新的表中,因为表名不一样,我该怎么写能让这个月的数据输入到这个月的表,等下个月又把下个月的数据输入到下个月的表
橙色阳光 2017-01-09
  • 打赏
  • 举报
回复
表明 命名规范定好 YYYY_MM_DD_001(诸如) 数据库方面搞个事务或者定时器 定时执行生成表. 后台方面 直接插入表根据时间 YYYY_MM_DD_001 可能出现的情况报错了.插入失败.应该就是数据库方面改生成的表的时候,生成失败了. (大概服务器挂了吧.断电重启啊.蓝屏啊)
闭包客 2017-01-09
  • 打赏
  • 举报
回复
判断两个日期是否在同一个月就行了。
  • 打赏
  • 举报
回复
百度 学习下sql事物

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧