如何将sql server 2000 的数据库表进行数据归档?

时间:2022-09-23 08:17:50
这是我第一次接触到数据归档的问题,
我不知道数据归档是不是就是要在建立一个新数据库,将就数据库里面的数据存储到新数据库中?
如果要是那样做的话那是不是就是要将旧数据库中的数据导入到新数据库中呢?
初学者,希望大家可以帮我解答,要怎样进行数据归档,谢谢.... 

35 个解决方案

#1


不一定要这么归档的,你也可以在原来的数据库中设计几个历史表,把你当前不需要的数据,直接insert into到历史表中,比如:

insert into history_table
select *
from tb
where ...

#2


那是不是我要在这个数据库中建立一个新的空表,里面的字段与旧表相同,
而这个空表就是你所写的history_table,有数据的表就是你这里的tb,
是这个意思吗???

#3


引用 2 楼 u012614453 的回复:
那是不是我要在这个数据库中建立一个新的空表,里面的字段与旧表相同,
而这个空表就是你所写的history_table,有数据的表就是你这里的tb,
是这个意思吗???


对哈

#5


明白了,谢谢两位

#6


我的文章里面的分区表由于2000不支持,你可以不看

#7


归档(archive)是借用了Oracle中日志管理中的概念.
如何将sql server 2000 的数据库表进行数据归档?

#8


哎,还有没有别的方法啊?我这样做被训了,主要是要看这些历史数据的人不会用sql,能不能导出一个文件之类的东西啊?

#9


引用 8 楼 u012614453 的回复:
哎,还有没有别的方法啊?我这样做被训了,主要是要看这些历史数据的人不会用sql,能不能导出一个文件之类的东西啊?
我的文章里面有说过这种方法

#10


一般来讲,用户看历史数据也不是直接在数据库里查询吧?

应该主要还是前端程序的设计问题.

#11


可是你不是说你的那个程序有的地方不支持sql2000吗?
哎,主要是这个表还关联了好多的表,好复杂啊...
到底数据归档是什么啊?不是把不长用的数据单独存储起来吗?
为什么我这么说,他还说不对啊?还有什么吗?

#12


引用 8 楼 u012614453 的回复:
哎,还有没有别的方法啊?我这样做被训了,主要是要看这些历史数据的人不会用sql,能不能导出一个文件之类的东西啊?


可以导入到excel、txt、csv等文件,但是一般的人都会用excel看。

#13


归档就是把一些历史数据和活动数据分离,由于2000没有分区表,所以只能用实体表来实现分区,或者把数据分出来,导出成文件,然后删除,只保留活动数据

#14


但是有些外键关联的话,可能没那么容易归档

#15


引用 11 楼 u012614453 的回复:
到底数据归档是什么啊?不是把不长用的数据单独存储起来吗?
为什么我这么说,他还说不对啊?还有什么吗?

思路是对的,但客户想要的功能可能没有这么简单,建议了解清楚需求.

#16


引用 11 楼 u012614453 的回复:
可是你不是说你的那个程序有的地方不支持sql2000吗?
哎,主要是这个表还关联了好多的表,好复杂啊...
到底数据归档是什么啊?不是把不长用的数据单独存储起来吗?
为什么我这么说,他还说不对啊?还有什么吗?


你可以先试试,用数据库里的,导出数据,菜单,可以导出到文件中的,你再问问同事或者相关的人把

#17


现在让我弄的是要将一个交易表所相关联的所有表都进行数据归档,
这里面有主键,有外键,还有关联,
... ...
要怎样将sql表中的数据生成excel呢?
生成excel是不是就不用管什么主键,外键和关联了呢?

#18


有脚本,但是不能避免主外键的问题,而且我的是2008,估计2000不能用

#19


要怎样将sql表中的数据生成excel呢?
--> 用bcp工具导出.

生成excel是不是就不用管什么主键,外键和关联了呢?
--> 是的.

#20


我不用pcd工具用语句可以吗?
INSERT INTO OPENROWSET
('Microsoft.Jet.oledb.4.0','Excel 12.0;DATABASE=D:\Excel文件名.xlsx',
'SELECT 序号,编号,名字,备注,添加时间,添加作者,修改时间,修改作者,状态,CRC FROM [Sheet1$]') 
SELECT * FROM BStudent
但是为什么出现
OLE DB 提供程序 'Microsoft.Jet.oledb.4.0' 报错。 
要怎样解决呢???

#21


服务器上的Office Excel是否是2007或以上版本?

#22


建议建一个数据结构相同的历史数据库([dbname]_hist). 
数据大致分为三类
一类,基本数据 全部同步到历史数据库
二类,业务表据数据,按日期归档到历史数据库,当前数据库删除
三数,月结报表类,按日期同步到历史数据库,当前数据库保留.

这样前端程序同步可以登录历史数据库(设置为一个历史帐套)查看,且前端程序不用作任何修改
也不影响所有的历史数据分析(合并历史数据库与当前数据库分析就可以了), 
而且一般跨年分析只要针对月结报表之类的数据分析就可以了,比较少用到业务单据来分析。

#23


是的,excel2007

#24



引用 23 楼 u012614453 的回复:
是的,excel2007


得安装一个 AccessDatabaseEngine ,下载然后安装

#25


然后代码修改一下,这样在试试:
INSERT INTO OPENROWSET
('microsoft.ace.oledb.12.0','Excel 12.0;DATABASE=D:\Excel文件名.xlsx',
'SELECT 序号,编号,名字,备注,添加时间,添加作者,修改时间,修改作者,状态,CRC FROM [Sheet1$]') 
SELECT * FROM BStudent     

#26


另外需要注意你的机器是32位的那么下载32位的AccessDatabaseEngine ,64位的就下载64位的

#27


建议建一个数据结构相同的历史数据库([dbname]_hist). 
 数据大致分为三类
 一类,基本数据 全部同步到历史数据库
 二类,业务表据数据,按日期归档到历史数据库,当前数据库删除
 三数,月结报表类,按日期同步到历史数据库,当前数据库保留.
 
这样前端程序同步可以登录历史数据库(设置为一个历史帐套)查看,且前端程序不用作任何修改
 也不影响所有的历史数据分析(合并历史数据库与当前数据库分析就可以了), 
 而且一般跨年分析只要针对月结报表之类的数据分析就可以了,比较少用到业务单据来分析。 

用EXCEL来历史归档,偏离了数据库系统. EXCEL管理起来比较麻烦,经历部门几批人员离职,几乎会找不到的,
历史数据还有一个重要的作用,历史数据分析.

#28


我现在是要在一个大的数据库里面找到所有有关交易表的统计
而这个交易表和其它表之间还有着主键,外键,关联
所以不单只是一个表,那就需要建立好多表,甚至就是相当于将这个数据库复制一个
还有,把旧数据库的数据导入到新数据库中,那旧数据库中的数据要怎么办?删除吗?
如果要是删除的话:之后要是再有人消费,这些数据也成了历史数据要怎样往数据库里面添加?这里面可能新添人了,也有可能是新添了消费的项目.
如果不删除:这样做那不就是相当于把这个数据库的数据导入到另一个数据库中,这样有意义吗?再次产生数据需要将这些数据存入到历史数据库时要怎么做?将历史数据库删除再次导入?

嘿嘿...这是我第一次解决有关数据归档的问题,可能我的问题不够成熟,也有可能我所想的方向就错了,希望有经验的人指点...

#29


把数据导出来不难,难是难在删除,特别是在没有级联的情况下外键中的删除顺序

#30


建议建一个数据结构相同的历史数据库([dbname]_hist). 
  数据大致分为三类
  一类,基本数据 全部同步到历史数据库
       例如(数据词典,物料资料,组织结构, 人事档案等) 必须全部同步到历史数据库,
      否则历史数据库没有办法用前端系统打开查看
  二类,业务表据数据,按日期归档到历史数据库,当前数据库删除
       例如(销售订单,采购单,申购单,出入库单,生产订单,应收应付票据等)
      可以根据单据类型来归档,例如销售订单不归档,出入库单归档.
  三数,月结报表类,按日期同步到历史数据库,当前数据库保留.
      例如(库存月结报表,总帐月结帐表,消费月结报表等), 可以保留的,一般月结报表占用空间不大. 

设计步骤
1. 创建一个归档单据基类(包括基础资料,业务单据,月结报表)
   为基数创建几个基本的虚拟函数(归档前检查函数, 归档后校验函数,及归档动作函数)
2. 创建各种归具体的归档单据, 继承基数的虚拟函数, 每个归档单据设定归档表名顺序,先归染主表,再归档子表
    表
3. 创建一个归档执行类, 执行的时候,根据具体的归档单据设定的单据步骤,及日期字段等设定,统一执行.
   执行类的参数(单据类型,归档日期即可), 根据单据类型创建具体的归档单据.

#31


好复杂啊...
虽然你说的很详细但是我还是没懂,我做的是学生餐卡
这个交易表包括了(卡表,卡类型表,用户表,用户类型表,主交易表,交易类型表,餐次表)
这个数据分类我能理解,但是那个设计步骤,有些难度...

#32


1. 卡表,卡类型表,用户表,用户类型表, 餐次, 交易类型表属于基本表,同步到历史数据库
2. 主交易表 属于业务单据表

设计步骤驱向通用型了,可以针对各种数据.
可扩展性强,统一调用,增加一个归档数据,只要增加一个归档单据即可,不用改归档主程序.
你的属于简单一点, 直接写一个归档执行就可以了. 

#33


看看到底什么是数据归档呢。

#34


学习一番,讨论的热烈很

#35


归档单据是什么啊?是不是就是要建立一个新表把历史数据归档的详细信息写入新表中啊?
就像归档时间,归档条数...这些啊

#1


不一定要这么归档的,你也可以在原来的数据库中设计几个历史表,把你当前不需要的数据,直接insert into到历史表中,比如:

insert into history_table
select *
from tb
where ...

#2


那是不是我要在这个数据库中建立一个新的空表,里面的字段与旧表相同,
而这个空表就是你所写的history_table,有数据的表就是你这里的tb,
是这个意思吗???

#3


引用 2 楼 u012614453 的回复:
那是不是我要在这个数据库中建立一个新的空表,里面的字段与旧表相同,
而这个空表就是你所写的history_table,有数据的表就是你这里的tb,
是这个意思吗???


对哈

#4


#5


明白了,谢谢两位

#6


我的文章里面的分区表由于2000不支持,你可以不看

#7


归档(archive)是借用了Oracle中日志管理中的概念.
如何将sql server 2000 的数据库表进行数据归档?

#8


哎,还有没有别的方法啊?我这样做被训了,主要是要看这些历史数据的人不会用sql,能不能导出一个文件之类的东西啊?

#9


引用 8 楼 u012614453 的回复:
哎,还有没有别的方法啊?我这样做被训了,主要是要看这些历史数据的人不会用sql,能不能导出一个文件之类的东西啊?
我的文章里面有说过这种方法

#10


一般来讲,用户看历史数据也不是直接在数据库里查询吧?

应该主要还是前端程序的设计问题.

#11


可是你不是说你的那个程序有的地方不支持sql2000吗?
哎,主要是这个表还关联了好多的表,好复杂啊...
到底数据归档是什么啊?不是把不长用的数据单独存储起来吗?
为什么我这么说,他还说不对啊?还有什么吗?

#12


引用 8 楼 u012614453 的回复:
哎,还有没有别的方法啊?我这样做被训了,主要是要看这些历史数据的人不会用sql,能不能导出一个文件之类的东西啊?


可以导入到excel、txt、csv等文件,但是一般的人都会用excel看。

#13


归档就是把一些历史数据和活动数据分离,由于2000没有分区表,所以只能用实体表来实现分区,或者把数据分出来,导出成文件,然后删除,只保留活动数据

#14


但是有些外键关联的话,可能没那么容易归档

#15


引用 11 楼 u012614453 的回复:
到底数据归档是什么啊?不是把不长用的数据单独存储起来吗?
为什么我这么说,他还说不对啊?还有什么吗?

思路是对的,但客户想要的功能可能没有这么简单,建议了解清楚需求.

#16


引用 11 楼 u012614453 的回复:
可是你不是说你的那个程序有的地方不支持sql2000吗?
哎,主要是这个表还关联了好多的表,好复杂啊...
到底数据归档是什么啊?不是把不长用的数据单独存储起来吗?
为什么我这么说,他还说不对啊?还有什么吗?


你可以先试试,用数据库里的,导出数据,菜单,可以导出到文件中的,你再问问同事或者相关的人把

#17


现在让我弄的是要将一个交易表所相关联的所有表都进行数据归档,
这里面有主键,有外键,还有关联,
... ...
要怎样将sql表中的数据生成excel呢?
生成excel是不是就不用管什么主键,外键和关联了呢?

#18


有脚本,但是不能避免主外键的问题,而且我的是2008,估计2000不能用

#19


要怎样将sql表中的数据生成excel呢?
--> 用bcp工具导出.

生成excel是不是就不用管什么主键,外键和关联了呢?
--> 是的.

#20


我不用pcd工具用语句可以吗?
INSERT INTO OPENROWSET
('Microsoft.Jet.oledb.4.0','Excel 12.0;DATABASE=D:\Excel文件名.xlsx',
'SELECT 序号,编号,名字,备注,添加时间,添加作者,修改时间,修改作者,状态,CRC FROM [Sheet1$]') 
SELECT * FROM BStudent
但是为什么出现
OLE DB 提供程序 'Microsoft.Jet.oledb.4.0' 报错。 
要怎样解决呢???

#21


服务器上的Office Excel是否是2007或以上版本?

#22


建议建一个数据结构相同的历史数据库([dbname]_hist). 
数据大致分为三类
一类,基本数据 全部同步到历史数据库
二类,业务表据数据,按日期归档到历史数据库,当前数据库删除
三数,月结报表类,按日期同步到历史数据库,当前数据库保留.

这样前端程序同步可以登录历史数据库(设置为一个历史帐套)查看,且前端程序不用作任何修改
也不影响所有的历史数据分析(合并历史数据库与当前数据库分析就可以了), 
而且一般跨年分析只要针对月结报表之类的数据分析就可以了,比较少用到业务单据来分析。

#23


是的,excel2007

#24



引用 23 楼 u012614453 的回复:
是的,excel2007


得安装一个 AccessDatabaseEngine ,下载然后安装

#25


然后代码修改一下,这样在试试:
INSERT INTO OPENROWSET
('microsoft.ace.oledb.12.0','Excel 12.0;DATABASE=D:\Excel文件名.xlsx',
'SELECT 序号,编号,名字,备注,添加时间,添加作者,修改时间,修改作者,状态,CRC FROM [Sheet1$]') 
SELECT * FROM BStudent     

#26


另外需要注意你的机器是32位的那么下载32位的AccessDatabaseEngine ,64位的就下载64位的

#27


建议建一个数据结构相同的历史数据库([dbname]_hist). 
 数据大致分为三类
 一类,基本数据 全部同步到历史数据库
 二类,业务表据数据,按日期归档到历史数据库,当前数据库删除
 三数,月结报表类,按日期同步到历史数据库,当前数据库保留.
 
这样前端程序同步可以登录历史数据库(设置为一个历史帐套)查看,且前端程序不用作任何修改
 也不影响所有的历史数据分析(合并历史数据库与当前数据库分析就可以了), 
 而且一般跨年分析只要针对月结报表之类的数据分析就可以了,比较少用到业务单据来分析。 

用EXCEL来历史归档,偏离了数据库系统. EXCEL管理起来比较麻烦,经历部门几批人员离职,几乎会找不到的,
历史数据还有一个重要的作用,历史数据分析.

#28


我现在是要在一个大的数据库里面找到所有有关交易表的统计
而这个交易表和其它表之间还有着主键,外键,关联
所以不单只是一个表,那就需要建立好多表,甚至就是相当于将这个数据库复制一个
还有,把旧数据库的数据导入到新数据库中,那旧数据库中的数据要怎么办?删除吗?
如果要是删除的话:之后要是再有人消费,这些数据也成了历史数据要怎样往数据库里面添加?这里面可能新添人了,也有可能是新添了消费的项目.
如果不删除:这样做那不就是相当于把这个数据库的数据导入到另一个数据库中,这样有意义吗?再次产生数据需要将这些数据存入到历史数据库时要怎么做?将历史数据库删除再次导入?

嘿嘿...这是我第一次解决有关数据归档的问题,可能我的问题不够成熟,也有可能我所想的方向就错了,希望有经验的人指点...

#29


把数据导出来不难,难是难在删除,特别是在没有级联的情况下外键中的删除顺序

#30


建议建一个数据结构相同的历史数据库([dbname]_hist). 
  数据大致分为三类
  一类,基本数据 全部同步到历史数据库
       例如(数据词典,物料资料,组织结构, 人事档案等) 必须全部同步到历史数据库,
      否则历史数据库没有办法用前端系统打开查看
  二类,业务表据数据,按日期归档到历史数据库,当前数据库删除
       例如(销售订单,采购单,申购单,出入库单,生产订单,应收应付票据等)
      可以根据单据类型来归档,例如销售订单不归档,出入库单归档.
  三数,月结报表类,按日期同步到历史数据库,当前数据库保留.
      例如(库存月结报表,总帐月结帐表,消费月结报表等), 可以保留的,一般月结报表占用空间不大. 

设计步骤
1. 创建一个归档单据基类(包括基础资料,业务单据,月结报表)
   为基数创建几个基本的虚拟函数(归档前检查函数, 归档后校验函数,及归档动作函数)
2. 创建各种归具体的归档单据, 继承基数的虚拟函数, 每个归档单据设定归档表名顺序,先归染主表,再归档子表
    表
3. 创建一个归档执行类, 执行的时候,根据具体的归档单据设定的单据步骤,及日期字段等设定,统一执行.
   执行类的参数(单据类型,归档日期即可), 根据单据类型创建具体的归档单据.

#31


好复杂啊...
虽然你说的很详细但是我还是没懂,我做的是学生餐卡
这个交易表包括了(卡表,卡类型表,用户表,用户类型表,主交易表,交易类型表,餐次表)
这个数据分类我能理解,但是那个设计步骤,有些难度...

#32


1. 卡表,卡类型表,用户表,用户类型表, 餐次, 交易类型表属于基本表,同步到历史数据库
2. 主交易表 属于业务单据表

设计步骤驱向通用型了,可以针对各种数据.
可扩展性强,统一调用,增加一个归档数据,只要增加一个归档单据即可,不用改归档主程序.
你的属于简单一点, 直接写一个归档执行就可以了. 

#33


看看到底什么是数据归档呢。

#34


学习一番,讨论的热烈很

#35


归档单据是什么啊?是不是就是要建立一个新表把历史数据归档的详细信息写入新表中啊?
就像归档时间,归档条数...这些啊