簡體   English   中英

如何在Sybase數據庫中歸檔舊數據?

[英]How to archive old data in Sybase database?

我正在開發基於Struts作為服務器端Java技術構建的應用程序,並且Sybase ASE 15用作存儲該應用程序數據的數據庫。 現在,Sybase中的表中已經充滿了大量數據,因此高級管理人員希望將早於幾年(例如3年)的數據進行歸檔並從數據庫表中刪除,但是應該可以在需要時恢復已歸檔的數據。

我們還應該能夠自動識別表之間的依賴關系,然后確定必須在其中存儲數據的表的順序。

我們還需要將表格式與數據一起存儲,因此數據檢索過程很容易。

我是一個JAVA專家,對從數據庫歸檔數據一無所知。 另外,我主要與Oracle合作,對Sybase還是很新的。

請告訴我,是否有任何工具/過程可用於從Sybase數據庫歸檔數據。 關於此問題的任何幫助/指南/指針將非常有幫助。

我閱讀了有關通過對數據庫中的數據進行分區來實現此目的的信息。 當前數據庫已經使用循環分區方法進行了分區。 是否可以在已經分區的數據庫上基於時間戳實現數據庫分區。 此外,所有表都不包含時間戳列。

我還讀到,如果無法進行分區,那么也可以通過創建視圖來實現數據歸檔。 我想知道此選項是否可行,如果可以,如何實現?

一種簡單而便宜的方法是在同一服務器上創建另一個數據庫,稱為存檔。 數據庫應啟用“選擇進入”選項。 現在,您將生成一個“選擇進入”查詢,該查詢將來自普通數據庫的數據輸入到存檔數據庫中。 如果發生這種情況,則可以在與“選擇入”命令相同的條件下運行刪除查詢,以刪除主數據庫中的數據。 如果您的表不隨時間變化,則可以始終在存檔數據庫中使用同一表。 如果確實發生更改,則可能需要再次創建該表,並將其命名為tablename-year-month

如果要求您將數據保存在平面文件中,請使用bcp實用程序提取數據。 我通常將此提取實用程序與以下參數一起使用:

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

請參閱SybBooks中有關所有參數和選項的一些詳細文檔。

一旦所有這些包含文件的平面文件都包含在內,就可以截斷所有表,並從一個干凈的空數據庫重新開始,直到需要再次存檔為止。 如果您不需要將整個表提取到文件中,建議執行以下操作:

  • 創建一個具有相同架構的臨時表
  • 在該表中選擇要存檔的數據。
  • 在原始表上使用相同的where子句刪除數據
  • 使用上述bcp out命令將數據提取到平面文件中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM