2

我正在开发一个基于 Struts 作为服务器端 Java 技术的应用程序,并且 Sybase ASE 15 用作存储应用程序数据的数据库。现在 Sybase 中的表已经填充了大量数据,因此上级管理层希望将几年前(比如 3 年)的数据归档并从数据库表中删除,但归档的数据应该能够在需要时恢复。

我们还应该能够自动识别表之间的依赖关系,然后决定必须归档数据的表的顺序。

我们还需要将表格格式与数据一起存储,因此数据检索过程很容易。

我是一个 JAVA 人,对从数据库中归档数据一无所知。此外,我主要与 Oracle 合作,并且对 Sybase 非常陌生。

请告诉我是否有任何工具/程序可用于存档 Sybase 数据库中的数据。关于这个问题的任何帮助/指导/指针都会非常有帮助。

我读到了通过对数据库中的数据进行分区来实现这一点。当前数据库已经以循环分区方法进行分区。是否可以在已经分区的数据库上实现基于时间戳的数据库分区。此外,所有表都不包含时间戳列。

我还读到,如果无法进行分区,也可以通过创建视图来实现数据归档。我想知道这个选项是否可行,如果可以,如何实现?

4

2 回答 2

0

一种简单且廉价的方法是在同一台服务器上创建第二个数据库,称为存档。数据库应该启用“选择进入”选项。现在,您生成一个“select into”查询,将普通数据库中的数据输入到归档数据库中。如果发生这种情况,您可以使用与“select into”命令相同的条件运行删除查询,以删除主数据库中的数据。如果您的表不随时间变化,您始终可以在存档数据库中使用同一个表。如果它确实发生了变化,您可能希望每次都再次创建表并将其命名为tablename-year-month.

于 2014-09-07T07:06:36.820 回答
0

如果您被要求将数据保存在平面文件中,请使用该bcp实用程序来提取数据。我通常将此提取实用程序与以下参数一起使用:

bcp <database>..<tablename> out /path/<tablename>.out -U<username> -P<password> -S<servername> -c 

请参阅有关SybBooks中所有参数和选项的一些详细文档。

一旦您拥有所有这些包含数据的平面文件,您就可以截断所有表并从干净且空的数据库重新开始,直到您需要再次归档。如果您不需要将整个表提取到文件中,我建议您执行以下操作:

  • 创建具有相同架构的临时表
  • 在该表中选择要存档的数据。
  • 删除原表同where子句的数据
  • 使用上述 bcp out 命令将数据提取到平面文件中
于 2015-12-04T14:59:26.503 回答