Java 如何在Sybase数据库中归档旧数据?
我正在开发一个基于Struts作为服务器端java技术构建的应用程序,Sybase ASE 15用作存储应用程序数据的数据库。现在Sybase中的表中已经填充了大量数据,因此高级管理层希望将几年(比如3年)以前的数据存档并从数据库表中删除,但存档的数据应该能够在需要时进行恢复 我们还应该能够自动识别表之间的依赖关系,然后决定数据归档的表顺序 我们还需要将表格式与数据一起存储,因此数据检索过程很容易 我是一个JAVA爱好者,对从数据库归档数据一无所知。此外,我主要与Oracle合作,而且对Sybase非常陌生 请告知我是否有任何工具/程序可用于归档Sybase数据库中的数据。关于这个问题的任何帮助/指导/建议都将非常有用 我读过关于通过对数据库中的数据进行分区来实现这一点的文章。当前数据库已使用循环分区方法进行分区。是否有可能在已经分区的数据库上实现基于时间戳的数据库分区。此外,所有表都不包含时间戳列Java 如何在Sybase数据库中归档旧数据?,java,database,sybase,archive,staging-table,Java,Database,Sybase,Archive,Staging Table,我正在开发一个基于Struts作为服务器端java技术构建的应用程序,Sybase ASE 15用作存储应用程序数据的数据库。现在Sybase中的表中已经填充了大量数据,因此高级管理层希望将几年(比如3年)以前的数据存档并从数据库表中删除,但存档的数据应该能够在需要时进行恢复 我们还应该能够自动识别表之间的依赖关系,然后决定数据归档的表顺序 我们还需要将表格式与数据一起存储,因此数据检索过程很容易 我是一个JAVA爱好者,对从数据库归档数据一无所知。此外,我主要与Oracle合作,而且对Syba
我还了解到,如果无法进行分区,也可以通过创建视图来实现数据归档。我想知道这个选项是否可行,如果可行,如何实现?一个简单而廉价的方法是在同一台服务器上创建第二个数据库,名为archive。数据库应启用“选择进入”选项。现在,您将生成一个“selectinto”查询,将普通数据库中的数据输入归档数据库。如果发生这种情况,您可以使用与“selectinto”命令相同的条件运行delete查询,以除去主数据库中的数据。如果您的表在一段时间内没有更改,您可以始终在存档数据库中使用相同的表。如果确实发生了变化,您可能希望每次都重新创建表,并将其命名为
tablename year month
如果要求将数据保存在平面文件中,请使用bcp
实用程序提取数据。我通常将此提取实用程序与以下参数一起使用:
bcp <database>..<tablename> out /path/<tablename>.out -U<username> -P<password> -S<servername> -c
bcp。。out/path/.out-U-P-S-c
请参阅中有关所有参数和选项的详细文档
一旦所有这些平面文件都包含了您的数据,您就可以截断所有表,然后重新开始使用一个干净的空数据库,直到需要再次存档为止。如果不需要将整个表提取到文件中,我建议您执行以下操作:
- 创建具有相同架构的临时表
- 在该表中选择要存档的数据
- 删除原始表中具有相同where子句的数据
- 使用上述bcp out命令将数据提取到平面文件中