日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PB使用数据管道实现数据的自动迁移和备份

發布時間:2024/3/24 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PB使用数据管道实现数据的自动迁移和备份 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用數據管道實現數據的自動遷移和備份

摘要:針對MIS系統的開發和使用過程中數據的備份和遷移問題,提出了解決問題的基本思路和方案,詳細闡述了方案實施過程中涉及的方法和技巧,并對使用PowerBuild開發MIS系統的一般思路作了簡要的介紹和說明。

關鍵詞:MISPowerBuild;數據管道;數據遷移;數據備份

分類號:TP311.52

1.引言

在MIS系統的開發中,PowerBuild7.0以其強大的數據處理能力、豐富的數據庫接口和數據訪問能力、支持三層或多層應用結構的開發和對Internet的有力支持,成為目前領先的Client/Server開發工具。

在MIS系統的開發和使用過程中,常常需要對數據進行備份和遷移。當應用系統開發成功后,系統從開發環境向運行環境遷移時,當舊的系統需要升級時,當新系統為了兼容原有系統使用時,當自動進行數據的備份和恢復時,或者為了提取數據樣本時,開發者或用戶可以通過手工的方法完成操作,但某些情況下, 開發者應該考慮在應用程序中實現數據的自動遷移。PowerBuild的數據管道是實現這種自動移動的有效方法之一。

在PowerBuild中,數據管道可以實現數據表間數據的移動,它可以將數據從一個或多個源表(也可以是存儲過程)中輸送到一個新的或現有的目標表中,這些數據表可以在同一個數據庫中,也可以在不同的數據庫中,甚至可以在不同的數據庫管理系統(DBMS)中。

2.實現方法

通過應用程序實現數據的自動遷移,要求被操作的源和目標數據庫已經存在,并且數據遷移的策略(數據管道)也應建立。在此基礎上,通過應用程序使用數據管道,實現數據的自動遷移。

2.1實現步驟

一般說來,在應用程序中使用數據管道有五個基本步驟:

(1)創建對象 創建數據管道對象、管道對象的支撐用戶對象和一個窗口對象。

(2)初始化操作?? 創建兩個事務對象的實例,分別連接源和目的數據庫;創建管道對象的支撐用戶對象的一個實例,并初始化為已經建立的數據管道對象。

(3)啟動數據管道??? 通過支撐用戶對象的實例啟動數據管道

(4)處理錯誤??? 對管道操作中出錯的數據行可以進行修復和放棄。

(5)結束操作??? 斷開數據庫的連接,并釋放用過的實例,關閉窗口。

2.2創建對象

2.2.1創建數據管道對象

使用數據管道實現數據的遷移,不管是在PowerBuild環境中以交互方式進行還是使用應用程序進行,首先必須建立數據管道。

建立數據管道應該在PowerBuild環境中進行。

1) 配置兩個ODBC數據源,這里假設它們是S和D,其中,S連接源數據庫,D連接目標數據庫。

2) 通過“New→Database→Pipeline”定義管道對象。在定義過程中,數據源如果是數據表,則“Data Source”選“Quick Select”/“SQL Select”,如果是存儲過程,則選“Stored Procedure”;“Source Connection”選S,“Destination Connection”選D;選定源連接中的數據表,根據需要選定字段,并設置數據行的篩選條件;設定目標表的名稱,管道操作的類型;存盤。

管道操作的類型有創建、替換、刷新、增加或修改幾種,根據需要選擇其中一種。正常情況下,如果進行數據備份,應定義兩個相關的管道對象,這兩個 管道對象只有管道操作的類型不同,其中一個的操作類型為“創建”,另外一個為“增加或修改”。當目標數據庫中無相應數據表(第一次備份)時,使用“創建” 操作的管道對象;當目標數據庫中有相應數據表(不是第一次備份)時,使用“增加或修改”操作的管道對象。在這里,定義兩個管道對象為 Pile_Create和Pile_Modify。

2.2.2創建管道的支撐用戶對象

創建的兩個管道對象Pile_Create和Pile_Modify可以實現交互方式的數據遷移,但還不能在應用程序中使用。為了在應用程序中使用管道對象的屬性和函數,應該建立管道對象的支撐用戶對象。

為了提高程序的通用性,可以設置一個比較通用的管道對象的用戶對象(即不用指定數據對象)。

通過選擇“New→Object→Standard Class”,再選擇“Pipeline”,建立管道用戶對象,其名字設定為uo_pipeline。用戶對象uo_pipeline具有6個屬性,5個事件,9個函數,其中在應用程序中較常使用的屬性、事件、函數如表1、表2、表3所示。

表1 管道對象的屬性

屬性名

數據類型

含義

RowsInError

Long

指明管道運行期間出錯行的行數

RowsRead

Long

指明管道讀入的行數

RowsWritten

Long

指明管道寫出的行數

DataObject

String

指明管道對象的名稱(如Pile_Create)

表2 管道對象的事件

事件

觸發時機

PipeEnd

當Start()或Repair()函數執行結束時出發

PipeMeter

每讀入或寫出一塊數據后觸發。數據塊大小由Commit因子決定

PipeStart

當Start()或Repair()函數開始執行時觸發

表3 管道對象的函數

函數

返回值數據類型

功能

Cancel

Integer

終止管道運行

Repair

Integer

修正管道用戶對象的錯誤數據窗口,用正確的數據更新目標數據庫

Start

Integer

啟動數據管道對象

為了能夠動態顯示管道操作的過程,需要在Uo_Pipeline用戶對象的PipeMeter事件中,將Uo_Pipeline的 RowsInError、RowsRead、RowsWritten三個屬性值傳遞給窗口對象顯示出來(窗口對象見后,其名稱W_CopyData)。通過窗口對象W_CopyData的自定義窗口級函數getpipemsg()實現(也可通過在w_copydata的declare中定義全局變量實 現)。

在事件PipeMeter寫入下面的腳本:

w_copydata.GetPipeMsg(RowsRead,RowsWritten,RowsInError)

2.2.3創建窗口對象

窗口對象用于顯示管道操作的動態信息,對管道操作進行監控,當有錯誤產生時,與管道對象進行交互。其名稱為w_copydata。

在w_copydata中包含的控件及作用如表4。

表4 窗口對象w_copydata包含的控件

控件類型

控件名稱

作用

靜態文本

St_T_read

“讀入行數”提示,其text為“讀入行數”

St_t_written

“寫入行數”提示,其text為“寫入行數”

St_t_error

“錯誤行數”提示,其text為“錯誤行數”

St_read

讀入行數,其text為u_pipeline的RowsRead值

St_written

寫入行數,其text為u_pipeline的RowsWritten值

St_error

錯誤行數,其text為u_pipeline的RowsInError值

數據窗口

Dw_pipe_error

自動顯示管道操作中的錯誤行

命令按鈕

Cb_write

啟動管道操作

Cb_stop

終止管道操作

Cb_applyfixes

將Dw_pipe_error數據窗口中修復的行傳輸給目標表

Cb_clear

清除Dw_pipe_error數據窗口中所有錯誤行

Cb_return

關閉窗口w_copydata,并返回

定義w_copydata的窗口級函數getpipemsg(),訪問級別為“Public”,返回值“None”,有三個參數:readrows、writerows、errorrows,類型均為long,值傳遞。腳本如下:

w_copydata.st_read.text=string(readrows)

w_copydata.st_written.text=string(writerows)

w_copydata.st_error.text=string(errorrows)

2.3初始化操作

初始化操作包括創建兩個事務對象的實例itrans_source和itrans_dest,分別連接源和目的數據庫;創建管道對象的支撐用戶對象uo_pipeline的一個實例iuo_pipeline。

由于實例變量itrans_source和itrans_dest在啟動數據管道操作時(在命令按鈕Cb_write的clicked事件中) 也要用到,所以應該將它們定義為全局實例變量。在窗口的declare中選擇instance variables,并添加以下腳本:

transaction itrans_source

transaction itrans_dest

uo_pipe iuo_pipe

初始化操作在窗口對象w_copydata的open事件中完成。在w_copydata的open事件中輸入下面的腳本:

itrans_source = CREATE transaction

itrans_dest = CREATE transaction

// Profile S,為了增加通用性,參數也可以從導出的profile文件中獲取

itrans_source.DBMS = "ODBC"

itrans_source.AutoCommit = False

itrans_source.DBParm ="ConnectString='DSN=s;UID=dba;PWD=ygg'"

connect USING itrans_source;

// Profile D,為了增加通用性,參數也可以從導出的profile文件中獲取

itrans_dest.DBMS = "ODBC"

itrans_dest.AutoCommit = False

itrans_dest.DBParm ="ConnectString='DSN=d;UID=dba;PWD=ygg'"

connect USING itrans_dest;

//建立管道對象uo_pipe的一個實例

iuo_pipe = CREATE uo_pipe

2.4啟動數據管道

啟動數據管道操作在命令按鈕Cb_write的clicked事件中進行,以在目標數據庫建立數據表(pile_create)作為默認操作,如果出錯,則進行數據表修改(pile_modify)。出錯行信息會自動出現在數據窗口dw_pipe_errors中。

在命令按鈕Cb_write的clicked事件中添加腳本:

iuo_pipe.dataobject = 'p_create'

integer li_start_result

li_start_result=iuo_pipe.start(itrans_source,itrans_dest,dw_pipe_errors)

//返回-3表示數據表已存在,使用修改方式

if li_start_result=-3 then

iuo_pipe.dataobject = 'p_modify'

li_start_result=iuo_pipe.start(itrans_source,itrans_dest,dw_pipe_errors)

end if

2.5處理行錯誤

在定義管道對象pile_Create和pile_modify時,可以設定最大出錯行數,出錯行數可以從1~no limit,當出錯行數達到指定值時,管道操作自動停止。但在操作中,由于用戶進行了誤操作或管道操作執行的時間比預期的要長時,用戶可以人工停止數據管道的運行。

當管道操作停止后,如果數據窗口dw_pipe_errors中有出錯行,則可進行修復。

數據管道的終止執行可以在命令按鈕cb_stop的clicked事件中通過執行數據管道實例對象的cancel()函數實現。腳本如下:

if iuo_pipeline.cancel() = 1 then

messagebox(“提示信息”,”終止數據管道操作失敗!”)

end if

忽略錯誤行的操作在命令按鈕cb_clear的clicked事件中進行,腳本如下:

dw_pipe_error.result()

修改數據后,重新提交工作在命令按鈕Cb_applyfixes的clicked事件中進行,腳本如下:

iuo_pipeline.repair()

2.6結束操作

管道操作完成后,應該斷開數據庫的連接,并釋放用過的實例。結束操作在命令按鈕cb_return的clicked事件中進行,腳本如下:

Destroy iuo_pipeline

DISCONNECT USING itrans_source;

Destroy itrans_source

DISCONNECT USING itrans_dest;

Destroy itrans_dest

Close(parent)

3.結語

使用數據管道在應用程序中實現數據的自動遷移和備份的一般實現方法,本文進行了有益的嘗試和探討。在正確配置的實際系統中,本方法已經實現數據 的正確遷移。整個開發過程在一個窗口用戶對象中完成,增加了代碼的可移植性和可重用性。當然,在遷移數據的可選擇性和通用性方面還有待進一步實踐。

參考文獻:

[1]PowerBuild7.0應用開發技術詳解.王蓉等.北京:電子工業出版社,2000.3

[2]PowerBuild7.0對象與控件技術詳解.王梅君等.北京:電子工業出版社,2000.3

[3]PowerBuild7.0原理與應用指南.劉紅巖 何雅麗等.北京:電子工業出版社,2000.3

?

總結

以上是生活随笔為你收集整理的PB使用数据管道实现数据的自动迁移和备份的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天做天天爱夜夜爽 | 中文字幕巨乳 | 91九色精品| www.成人免费视频 | 欧美综合亚洲图片综合区 | 高清精品xnxxcom | 手机在线观看av网站 | 国产在线第二页 | 亚洲视频 欧美视频 | 精品国产av 无码一区二区三区 | 日噜| 久久久久久久久久久影院 | 亚洲中文字幕视频一区 | 国产精品VideoSex性欧美 | 日本免费一区二区视频 | 插插射射 | av在线观看地址 | 欧美激情视频网 | 黑人多p混交群体交乱 | 东北少妇av | 久久久999久久久 | 国产精品无码一区二区三区在线看 | 天天天天天天天干 | 看毛片的网址 | 黄色片www| 日本一区二区视频在线观看 | 亚洲免费av网 | 国产一区导航 | 亚洲专区在线视频 | 丰满少妇一区二区三区 | 超碰女人 | 日韩在线免费观看av | 国产精品人八做人人女人a级刘 | 影音先锋在线播放 | 凹凸日日摸日日碰夜夜 | 强行糟蹋人妻hd中文 | 久久依人 | 想要视频在线观看 | 欧洲av一区二区三区 | 国产第113页 | 深夜视频一区二区 | 国产不卡一区二区视频 | 天堂av一区二区三区 | 日韩精品伦理 | 国产无遮挡裸体免费视频 | 国产精品国语 | 中文字幕免费播放 | 久久中文字幕在线观看 | 国产成人无码a区在线观看视频 | 国精产品一区一区三区在线 | 日韩福利视频在线观看 | 推特裸体gay猛交gay | 精品国产自在精品国产精小说 | 999免费| 久久久久久九九九九 | 亚洲精品久久久久久 | 中文字幕网站在线观看 | 色呦呦视频 | www.sesehu.com| 色咪咪网站 | 国产精品老女人 | 国产精品三 | 香蕉视频在线观看黄 | 国产激情自拍 | 亚洲欧美第一页 | 91一区二区三区四区 | 最近中文字幕在线观看 | 久久精品男人 | 国产在线二区 | 国产一区二区三区在线观看免费 | 中文字幕人妻一区二 | 国产精品美女久久久 | 亚洲欧美另类激情 | 亚洲精品888 | 亚洲经典一区二区三区 | av在线色 | 婷婷中文| 黄色三级国产 | 欧美日韩国产一区在线 | 欧美日在线观看 | 少妇高潮一区二区三区在线 | 日韩中文字幕在线观看 | 严厉高冷老师动漫播放 | 乱色精品无码一区二区国产盗 | 女人17片毛片60分钟 | 黑人干日本少妇 | 偷拍老头老太高潮抽搐 | 欧美一区二区三区久久综合 | 91视频 - 8mav| 婷婷午夜精品久久久久久性色av | 国产视频精品视频 | 日本高清网站 | 日本理伦片午夜理伦片 | 8x8ⅹ国产精品一区二区二区 | 亚洲AV无码久久精品色三人行 | 国产在线1区 | 天天欧美| 午夜激情电影院 | 欧美精品第1页 |