會計電算化

當前位置 /首頁/財會相關/會計電算化/列表

用友U8備份檔案詳細步驟

你知道用友U8財務軟體如何備份檔案嗎?你對用友U8備份檔案詳細步驟瞭解嗎?下面是yjbys小編為大家帶來的用友U8備份檔案詳細步驟的知識,歡迎閱讀

用友U8備份檔案詳細步驟

  一、引言

用友財務軟體是目前國內財務領域中使用得最廣泛的一種,審計署下發的AO軟體中,就可以直接匯入用友多個版本的資料,給審計人員帶來極大的方便。但有時審計人員會面對幾十甚至上百個賬套,如果逐個處理,未免費時費力。本文針對用友8.51的一個備份檔案作一點分析,對其中各關鍵步驟給出一個程式處理的辦法,最後給出一個解決用友8.51備份檔案批量匯入的流程。一點粗淺想法,拋磚引玉,同時也希望能給大家一點啟示。

  二、分析過程

用友8.51在備份的時候,一般會產生兩個檔案:_和.其中比較小,不到1K,而_通常比較大。由此,我們判斷,財務資料應該在_中。

我們用UltraEdit軟體開啟檔案,發現它其實就是一個文字檔案,儲存著備份相關的一些資訊,如軟體版本、備份日期、賬套年度、檔案路徑等。而開啟_檔案時,我們發現是一堆亂碼,甚至找不到常見的一些檔案頭的資訊。因此我們初步判斷它有可能是壓縮過的檔案。而且,從常理講,考慮到磁碟空間的問題,資料檔案備份的時候通常也會壓縮處理。

嘗試用WinRar開啟_,成功。解壓後,得到一個檔案:UFDATA.檔案沒有後綴名,因此我們還是先用UltraEdit開啟。在檔案頭部,我們看到有“TAPE”、“Microsoft SQL Server”等字樣,因此我們初步判斷它跟SQL Server有關。

根據以上思路,我們反過來比較,檢視SQL Server資料庫的各種檔案的頭部,看是否有與UFDATA 檔案頭相似的檔案。SQL Server資料庫中,與資料相關的檔案,我們平時接觸比較多的主要有資料檔案和備份裝置檔案。新建一個空的資料庫,用UltraEdit檢視它的資料檔案的頭部,未發現相關字樣,而建立一個備份裝置後,檢視該檔案的'頭部,正好跟UFDATA檔案的頭部是一樣的。因此我們初步判定UFDATA檔案為SQL Server資料庫的備份裝置檔案。並且,我們知道TAPE是磁帶的意思,而SQL Server中跟磁帶相關的通常與資料庫的備份有關係。

接下來我們就分析UFDATA檔案中的內容。開啟SQL Server的企業管理器,新建一個備份裝置,並將檔名指定我我們解壓後得到的UFDATA檔案。確定後,檢視新建立備份裝置的內容,發現它其實是一個(或多個)資料庫的完全備份。將它還原後,我們可以看到,這是用友的一個賬套資料庫。

對一個本地的資料庫,我們就可以根據自己的需要,進行相關的查詢和操作了。到此為止,我們其實已經完成了將一個用友U8.51的備份檔案轉換成我們可操作資料庫的過程。但如果僅僅如此,那麼本文其實是沒有什麼意義的,因為這個步驟我們可以很容易地利用AO軟體來實現。

在實際工作中,我們遇到的往往不是單個的賬套。由於很多企業有很多獨立核算的分公司,並且每個公司每年都要建一套賬,因此,我們面對的往往是十幾個、幾十個賬套,有時甚至會面對上百個賬套,而AO中又沒有提供批量匯入的辦法,如果一個一個匯入的話效率太低。基於這種情況,本文就利用上述分析的結果,給出一個解決的辦法,能讓我們批量匯入用友的備份資料。

  三、解決辦法

要實現批量匯入,必須編寫程式,實現上述分析過程中的解壓、新增備份裝置、還原資料庫、抽取資料等步驟。我們首先對每一個關鍵步驟給出相應的解決辦法,最後再給出一個總體的流程。

檔案解壓;利用Win32的API:ShellExecuteEx,呼叫WinRar將壓縮檔案解壓到指定的臨時資料夾下,並得到解壓程式的控制代碼(前提是已經安裝了WinRar軟體)。其中要用到SHELLEXECUTEINFO這個結構,用來指定WinRar的路徑以及相應的解壓引數。具體可以查閱Win32 API幫助。

新增裝置;利用SQL Server 2000的儲存過程sp_addumpdevice新增裝置檔案。

還原資料庫;利用SQL Server 2000的命令Restore DATABASE,從裝置中的備份還原資料庫。另外,檢視備份文裝置中的備份資料庫資訊可以使用命令:RESTORE HEADERONLY.

刪除備份裝置;可以使用儲存過程:sp_dropdevice.詳細資訊可以查閱SQL Server 2000的幫助文件。

接下來我們就給出批量匯入用友8.51備份檔案的主要流程:

定義SHELLEXECUTEINFO型別的變數:SI

指定SI的相關引數:動作為“Open”、檔案為WinRar的執行檔案(指定長檔名)

對每個備份檔案_,迴圈處理(迴圈1)

得到檔案路徑和檔名,以及某些賬套資訊(公司、年份等等)

指定SI的引數為:x sFile *.* sTemp

(注:sFile為備份檔案的長檔名,sTemp為一個臨時資料夾)

呼叫:ShellExecuteEx SI

獲取SI的狀態直到它執行完畢

在資料庫伺服器上執行:sp_addumpdevice disk,U8Back,physical_name

(注:U8Back為我們為裝置取的名,physical_name為解壓後得到的UFDATA檔案的長檔名)

執行:RESTORE HEADERONLY From U8Back,得到裝置中的備份列表記錄集

(注:一條記錄對應於一個備份)

對備份列表記錄集的每條記錄,迴圈處理(迴圈2)

根據列表記錄集中的內容,得到資料庫的某些資訊(如賬套年份)

Restore DATABASE UF8 From U8Back with File=file_number,Move Ufmodel

To DataFile,MOVE Ufmodel_LOG TO LogFile, replace

(注:file_number為從備份列表記錄集中得到的要還原的備份集編號,DataFile與LogFile分別為還原後資料檔案與日誌檔案的長檔名)

抽取資料庫中相應的資料

(注:如果把多個賬套資料合併到一起,需要根據前面得到的賬套資訊將資料進行區分,例如:將各表加入賬套的年份、公司、地區等欄位或是能區分各賬套的一個關鍵字欄位進行區分)

結束迴圈1

在資料庫伺服器上執行:sp_dropdevice U8Back,刪除裝置

結束迴圈2

善後工作,如刪除臨時檔案等

  四、結束語

本文是作者的一次實際經歷的總結。在一次企業審計中,審計人員拿到了一百六十多個備份檔案,並且任務要求將這些賬套中的有關資料進行合併,以便分析。最後我們以本文所述辦法進行處理,程式碼寫完後,用了不到一個晚上的時間,就將所有賬套處理完成。

TAG標籤:備份檔案 U8 用友 #