国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Access > 正文

將Access數據庫移植到Oracle

2024-09-07 19:05:09
字體:
來源:轉載
供稿:網友
    從現有系統向 Oracle 數據庫的移植過程可能令人畏懼,尤其是現有數據庫與 Oracle 數據庫結構具有很少的相似性或者沒有相似性的時。 在本技術說明中,我將對比從 Microsoft access 移植到 Oracle 的兩種技術:使用 Microsoft Access 中的實用程序以及某些 DOS 專用批處理文件的“原始”方法,以及使用 Oracle Migration Workbench (OMW) 工具的“改進”方法。 手動方法
   第一種技術包括兩個階段。第一階段是將 Access 數據庫轉換為 Oracle 數據庫。只有當 Access 作為前端(如表單和報表) — 并且 Oracle 數據庫繼續作為后端的時候才使用第二階段。后者提供了一種在即席查詢基礎上將 Access 數據庫備份到 Oracle 的策略。還可以建立一個服務,使這一過程定期自動地運行。
為了實現從 Access 到 Oracle 數據庫的手動移植,您可以遵循以下這些步驟: 在 Oracle 中定義具有相同數據類型的表。避免在 Oracle 中使用 CLOB,因為這種數據類型會使系統速度降低;使用 varchar2 作為替代類型。此外,禁止在列名中使用空格,禁止使用百分號。單詞 mode 和 comment 是 Oracle 中的要害字,因此假如您的 Access 數據庫有包含這些單詞的列名,則應該在 Oracle 中將它們改為其他有意義的名稱。謹慎處理日期和時間之間、具有小數的數字與沒有小數的數字之間以及 char 與 varchar2 的數據類型轉換。在 Oracle 中沒有 Boolean 類型 — 使用 char(1) 作為替代類型。
確保 Access 表定義了主鍵(Oracle 的所有表均需它們)。此外,Oracle 區分大小寫,而 Access 不區分大小寫。所有列和表的名稱均使用大寫字母。另外,在 Oracle 中名稱應少于 30 個字符(在 Access 中為少于 64 個)。
前往“控制面板”->“治理工具”->“數據源 (ODBC)”。
在“系統 DSN”選項卡中,單擊“添加”。
選擇 Oracle ODBC 驅動程序,然后單擊“完成。
在“ODBC 驅動程序設置”框中,為 DNS 鍵入數據庫名稱而非主機名稱。
鍵入說明。
對于“數據源服務名”,再次鍵入數據庫的名稱并指定 UserID。
根據需要設置其他選項,并相應地更改預取數量。注重,應用程序提取行所用的 Oracle 數據庫必須是 8.0.3 或更高版本。
單擊“確定”兩次。注重,根據您的操作系統版本不同,您可能可以選擇在驅動程序配置中直接使用 TNS 名稱服務。
在繼續操作之前,測試該連接。
轉到 Access。
選擇表。
右鍵單擊“鏈接表”。
在對話框中,轉到“文件類型”,選擇 ODBC Databases ()。
轉到“機器數據源”選項卡,找到所需 DSN。選中它,單擊“確定”。
假如尚未填寫服務名、用戶名和口令,則鍵入這些項。對于服務名,應該使用該 DSN。
假如尚未填寫服務名、用戶名和口令,則鍵入這些項。對于服務名,應該使用 DSN。
單擊“確定”,出現一系列的表和模式。選擇表。單擊“確定”。
對于沒有主鍵的表,提示您選擇唯一的記錄標識符。對于這些表,選擇“不顯示字段”,然后單擊“確定”。現在您將看到 Access 中所有的鏈接表(在表的旁邊有一個球形標志)。
轉到“查詢”選項卡。
選擇“新建”->“查找不匹配項查詢向導”。
選擇 Access 中的表。單擊“下一步”。
選擇從 Oracle 中鏈接的表(現在位于 Access 中)。
假如有主鍵,則對其進行匹配。
假如沒有主鍵,只需單擊“下一步。
假如有多個主鍵,則只需匹配其中一個。
單擊“下一步”,選擇所有字段,選擇“下一步”,單擊“修改設計”,然后單擊“完成”。
轉到“查詢”->“追加查詢”。
選擇表名作為所討論的鏈接表,假如尚未選擇,則選擇當前數據庫,然后單擊“確定”。
在“追加到”部分中,假如尚未選擇相應列,則選擇這些列。
轉到匹配主鍵列中,刪除出現在“追加到”部分中的任何內容。
保存該查詢。
假如有一個主鍵,則此步驟即可完成。
假如有多個主鍵,則轉到 SQL 視圖中,將查詢更改為包含兩個主鍵 — 例如,假如表有兩個主鍵(如 Catalog# 和 Step#),并且您在匹配查詢向導中使用了 Catalog#,則將:
INSERT INTO PMSANGAL_TBLSPECSTEPS ( MOD, [CATALOG#], [STEP#], LAYER, NOM_OHMS,
NOM_OHMS, MAX_OHMS, LEFT_PERCENT, RIGHT_PERCENT )
SELECT SpecSteps.Mode, SpecSteps.[Catalog #], SpecSteps.[Step #], SpecSteps.Layer,
SpecSteps.[Min Ohms], SpecSteps.[Nom Ohms], SpecSteps.[Max Ohms], SpecSteps.[Left %],
SpecSteps.[Right %]
FROM SpecSteps LEFT JOIN PMSANGAL_TBLSPECSTEPS ON SpecSteps.[Catalog #] =
PMSANGAL_TBLSPECSTEPS.[CATALOG#]
WHERE (((PMSANGAL_TBLSPECSTEPS.[CATALOG#]) Is Null));

修改為:
INSERT INTO PMSANGAL_TBLSPECSTEPS ( MOD, [CATALOG#], [STEP#], LAYER, MIN_OHMS,
NOM_OHMS, MAX_OHMS, LEFT_PERCENT, RIGHT_PERCENT )
SELECT tblSpecSteps.Mode, tblSpecSteps.[Catalog #], tblSpecSteps.[Step #], tblSpecSteps.Layer,
tblSpecSteps.[Min Ohms], tblSpecSteps.[Nom Ohms], tblSpecSteps.[Max Ohms],
    tblSpecSteps.[Left %], tblSpecSteps.[Right %]
FROM tblSpecSteps LEFT JOIN PMSANGAL_TBLSPECSTEPS ON ((tblSpecSteps.[Catalog #] =
PMSANGAL_TBLSPECSTEPS.[CATALOG#]) AND  (tblSpecSteps.[Step #] = PMSANGAL_TBLSPECSTEPS.[STEP#]))
WHERE (((PMSANGAL_TBLSPECSTEPS.[CATALOG#]) Is Null) AND ((PMSANGAL_TBLSPECSTEPS.[STEP#]) Is Null));因為所有主鍵列均非空,所以您需要在 WHERE 條件中使用 AND。
對所有表重復以上步驟。
假如表中沒有主鍵,則使用 AND 而非 OR 在所有列上進行一次聯接并在所有列上進行一次 null 檢查。
轉到“宏”。
在“操作”中選擇“OpenQuery”,并選擇追加的查詢之一。“視圖”將是“數據表”,而“數據模式”將是“編輯”。
保存該宏。
選擇該宏,并轉到“工具”-“宏”->“將宏轉換為 Visual Basic 代碼”。
假如尚未選中“給生成的函數加入錯誤處理”和“包含宏注釋”,則選中此二者,并單擊“轉換”,將該宏轉換為具有函數名的模塊。
保存該模塊。
再次轉到該模塊,對其進行更改,使用以下的模板:
'------------------------------------------------------------
' CalMacro
'
'------------------------------------------------------------
Function CalMacro()
On Error GoTo CalMacro_Err
   
Dim strConnect As String
Dim strMyFile As String
Dim dbs As Database
Dim rst As RecordsetstrConnect = "ODBC;DATABASE=PUNEET;DSN=PUNEET;" & "UID=PMSANGAL;" & "PWD=********;"'PUNEET is the DSN or name of the database...Set dbs = OpenDatabase("", False, True, strConnect)
Set rst = dbs.OpenRecordset("PMSANGAL.tblCal", dbOpenDynaset)
   
DoCmd.SetWarnings False
DoCmd.OpenQuery "tblCal Without Matching PMSANGAL_TBLCAL", acNormal, acEdit
   
dbs.CloseCalMacro_Exit:
Exit FunctionCalMacro_Err:
MsgBox Error$
Resume CalMacro_ExitEnd Function對于所有的追加查詢,重復以上過程。
在創建這些模塊之后,您可以刪除那些用于創建這些模塊的宏。
再創建一個新的宏。
在“操作”中選擇“RunCode”,并從剛才為其所創建的模塊中選擇或鍵入函數名。為此,雙擊“函數”->“數據庫”,選擇正確的模塊和函數。
對于同一個宏中的所有追加查詢都執行此過程。
最后,在“操作”中選擇“Quit”,并選擇“退出”選項。
現在執行簡單的一步,但卻是最重要的一步:利用以下信息制作一個批處理文件:
"C:/PRogram Files/Microsoft Office/Office/Msaccess.exe" "database path" /x  Macroname運行該批處理文件。
   您可以看到此方法需要大量手動工作。需要執行很多步驟,并且該過程很容量出錯。即使您只做錯一步,也很難進行反向跟蹤并調試什么地方出錯了。此外,假如您需要重新鏈接表,則會感到困難重重且很費時,這取決于要轉換的表的數量。  自動方法 第二種移植方法與第一種方法相比具有明顯的優勢。 以數據類型轉換為例。OMW 提供一個向導來指導您完成此過程,從而簡化了移植過程。該工具推薦并提供了易于更改的默認值。下表列出了一些推薦值: 訪問字段 默認值 推薦值
文本 Varchar2(999) Varchar2(999)
數字 — 長整型 Number(11,0) Number(11,0)
數字 — 字節型 Number(3,0) Number(3,0)
數字 — 整型 Number(5,0) Number(5,0)
日期/時間 Date Date
布爾型 Number(1,0) Number(1,) 或 char(1)

即使對于非 Access 數據庫,OMW 也在集成環境中提供了對觸發器、過程和數據庫模式等轉換的完整支持??梢赞D換的 Microsoft Access 版本是 2.0、95、97 和 2000。 下表總結了 Oracle 與 Access 之間的轉換: 特性 支持的轉換?
表 是
視圖 否(只支持查詢)
索引 是
組/角色 N/A
用戶 否
約束 是(有效性規則)
權限 否
用戶定義類型 N/A
存儲過程 N/A
觸發器 N/A
嵌入式 SQL N/A
其他特性 關系、鏈接表、應用程序代碼重用  下圖演示了 OMW 在體系結構級別上的運作方式:
圖 1:OMW 體系結構 將Access數據庫移植到OracleOMW 使用向導和腳本,如下:
捕捉向導捕捉源數據庫。
移植向導將源模型移植到 Oracle 模型。
腳本創建一系列描述數據庫結構的文件,還將數據從源數據庫復制到目標數據庫。 在使用向導和腳本之后,您可以使用 OMW 用戶接口來自定義 Oracle 數據模型。
為了移植不同的第三方數據庫,OMW 使用了專用于它所能移植的各種數據庫的插件,包括 SQL Server、DB2 和 Informix。必須至少與 OMW 一起安裝一個插件。 Oracle 在 OTN 上存放了關于如何使用 OMW 進行移植的大量文檔,并且提供免費下載。但是下面的概述表明該過程相當簡單: 啟動捕捉向導。
單擊 Next。
輸入連接目標 Oracle 數據庫所需的信息。
單擊 Next。
出現“Migrate Tablespaces, Users, and User Tables”頁面。
查看“Migrate Tablespaces, Users, and User Tables”頁面上的信息,并單擊 Next;出現“Migrate Table Data”頁面。
指定在本移植向導會話期間是否傳輸數據。
單擊 Next;出現“Select Schema Objects to Migrate”頁面。
選擇要移植的模式對象,并單擊 Next;出現“Summary”頁面。
查看摘要信息。
單擊 Finish,啟動移植過程。
出現一個進度屏幕,顯示關于移植進度的信息。復雜數據庫的移植過程可能需要很長時間。
在具有 Microsoft Access 插件時,出現“Modify Microsoft Access Database”屏幕。您還可以更改 Microsoft Access 數據庫文件,以便 Microsoft Access 表單和報表使用 ODBC 連接來使用目標數據庫:
輸入 ODBC 連接的用戶名。ODBC 連接用戶名是被移植數據庫的名稱。
輸入用戶的口令。
輸入目標數據庫的 ODBC 連接名稱。
出現一個進度屏幕,顯示關于移植進度的信息。復雜數據庫的移植過程可能需要很長時間。
結論 這里描述的步驟只是對過程的概述,過程可能更短或更長,這取決于所要轉換的數據庫。強烈建議使用 OMW 進行移植。對于此主題,您可以利用 Oracle 在線教育以及大量的論壇。有關將 Access 應用程序移植到 Html DB 的信息,請閱讀此技術白皮書。  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦城县| 上饶县| 衡阳市| 肥乡县| 永丰县| 闻喜县| 皮山县| 博兴县| 临清市| 昔阳县| 新野县| 夏河县| 大英县| 永德县| 富阳市| 芦溪县| 海南省| 安多县| 昭苏县| 舟曲县| 固镇县| 封丘县| 犍为县| 万年县| 买车| 雅安市| 瑞丽市| 扶沟县| 时尚| 郓城县| 普定县| 凌海市| 梁河县| 玉屏| 成武县| 安丘市| 浠水县| 深圳市| 集贤县| 白水县| 黄梅县|