麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > Access > 正文

將Access數(shù)據(jù)庫移植到Oracle

2024-09-07 19:05:09
字體:
供稿:網(wǎng)友
    從現(xiàn)有系統(tǒng)向 Oracle 數(shù)據(jù)庫的移植過程可能令人畏懼,尤其是現(xiàn)有數(shù)據(jù)庫與 Oracle 數(shù)據(jù)庫結(jié)構(gòu)具有很少的相似性或者沒有相似性的時(shí)。 在本技術(shù)說明中,我將對比從 Microsoft access 移植到 Oracle 的兩種技術(shù):使用 Microsoft Access 中的實(shí)用程序以及某些 DOS 專用批處理文件的“原始”方法,以及使用 Oracle Migration Workbench (OMW) 工具的“改進(jìn)”方法。 手動(dòng)方法
   第一種技術(shù)包括兩個(gè)階段。第一階段是將 Access 數(shù)據(jù)庫轉(zhuǎn)換為 Oracle 數(shù)據(jù)庫。只有當(dāng) Access 作為前端(如表單和報(bào)表) — 并且 Oracle 數(shù)據(jù)庫繼續(xù)作為后端的時(shí)候才使用第二階段。后者提供了一種在即席查詢基礎(chǔ)上將 Access 數(shù)據(jù)庫備份到 Oracle 的策略。還可以建立一個(gè)服務(wù),使這一過程定期自動(dòng)地運(yùn)行。
為了實(shí)現(xiàn)從 Access 到 Oracle 數(shù)據(jù)庫的手動(dòng)移植,您可以遵循以下這些步驟: 在 Oracle 中定義具有相同數(shù)據(jù)類型的表。避免在 Oracle 中使用 CLOB,因?yàn)檫@種數(shù)據(jù)類型會使系統(tǒng)速度降低;使用 varchar2 作為替代類型。此外,禁止在列名中使用空格,禁止使用百分號。單詞 mode 和 comment 是 Oracle 中的要害字,因此假如您的 Access 數(shù)據(jù)庫有包含這些單詞的列名,則應(yīng)該在 Oracle 中將它們改為其他有意義的名稱。謹(jǐn)慎處理日期和時(shí)間之間、具有小數(shù)的數(shù)字與沒有小數(shù)的數(shù)字之間以及 char 與 varchar2 的數(shù)據(jù)類型轉(zhuǎn)換。在 Oracle 中沒有 Boolean 類型 — 使用 char(1) 作為替代類型。
確保 Access 表定義了主鍵(Oracle 的所有表均需它們)。此外,Oracle 區(qū)分大小寫,而 Access 不區(qū)分大小寫。所有列和表的名稱均使用大寫字母。另外,在 Oracle 中名稱應(yīng)少于 30 個(gè)字符(在 Access 中為少于 64 個(gè))。
前往“控制面板”->“治理工具”->“數(shù)據(jù)源 (ODBC)”。
在“系統(tǒng) DSN”選項(xiàng)卡中,單擊“添加”。
選擇 Oracle ODBC 驅(qū)動(dòng)程序,然后單擊“完成。
在“ODBC 驅(qū)動(dòng)程序設(shè)置”框中,為 DNS 鍵入數(shù)據(jù)庫名稱而非主機(jī)名稱。
鍵入說明。
對于“數(shù)據(jù)源服務(wù)名”,再次鍵入數(shù)據(jù)庫的名稱并指定 UserID。
根據(jù)需要設(shè)置其他選項(xiàng),并相應(yīng)地更改預(yù)取數(shù)量。注重,應(yīng)用程序提取行所用的 Oracle 數(shù)據(jù)庫必須是 8.0.3 或更高版本。
單擊“確定”兩次。注重,根據(jù)您的操作系統(tǒng)版本不同,您可能可以選擇在驅(qū)動(dòng)程序配置中直接使用 TNS 名稱服務(wù)。
在繼續(xù)操作之前,測試該連接。
轉(zhuǎn)到 Access。
選擇表。
右鍵單擊“鏈接表”。
在對話框中,轉(zhuǎn)到“文件類型”,選擇 ODBC Databases ()。
轉(zhuǎn)到“機(jī)器數(shù)據(jù)源”選項(xiàng)卡,找到所需 DSN。選中它,單擊“確定”。
假如尚未填寫服務(wù)名、用戶名和口令,則鍵入這些項(xiàng)。對于服務(wù)名,應(yīng)該使用該 DSN。
假如尚未填寫服務(wù)名、用戶名和口令,則鍵入這些項(xiàng)。對于服務(wù)名,應(yīng)該使用 DSN。
單擊“確定”,出現(xiàn)一系列的表和模式。選擇表。單擊“確定”。
對于沒有主鍵的表,提示您選擇唯一的記錄標(biāo)識符。對于這些表,選擇“不顯示字段”,然后單擊“確定”。現(xiàn)在您將看到 Access 中所有的鏈接表(在表的旁邊有一個(gè)球形標(biāo)志)。
轉(zhuǎn)到“查詢”選項(xiàng)卡。
選擇“新建”->“查找不匹配項(xiàng)查詢向?qū)А薄?
選擇 Access 中的表。單擊“下一步”。
選擇從 Oracle 中鏈接的表(現(xiàn)在位于 Access 中)。
假如有主鍵,則對其進(jìn)行匹配。
假如沒有主鍵,只需單擊“下一步。
假如有多個(gè)主鍵,則只需匹配其中一個(gè)。
單擊“下一步”,選擇所有字段,選擇“下一步”,單擊“修改設(shè)計(jì)”,然后單擊“完成”。
轉(zhuǎn)到“查詢”->“追加查詢”。
選擇表名作為所討論的鏈接表,假如尚未選擇,則選擇當(dāng)前數(shù)據(jù)庫,然后單擊“確定”。
在“追加到”部分中,假如尚未選擇相應(yīng)列,則選擇這些列。
轉(zhuǎn)到匹配主鍵列中,刪除出現(xiàn)在“追加到”部分中的任何內(nèi)容。
保存該查詢。
假如有一個(gè)主鍵,則此步驟即可完成。
假如有多個(gè)主鍵,則轉(zhuǎn)到 SQL 視圖中,將查詢更改為包含兩個(gè)主鍵 — 例如,假如表有兩個(gè)主鍵(如 Catalog# 和 Step#),并且您在匹配查詢向?qū)е惺褂昧?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));因?yàn)樗兄麈I列均非空,所以您需要在 WHERE 條件中使用 AND。
對所有表重復(fù)以上步驟。
假如表中沒有主鍵,則使用 AND 而非 OR 在所有列上進(jìn)行一次聯(lián)接并在所有列上進(jìn)行一次 null 檢查。
轉(zhuǎn)到“宏”。
在“操作”中選擇“OpenQuery”,并選擇追加的查詢之一。“視圖”將是“數(shù)據(jù)表”,而“數(shù)據(jù)模式”將是“編輯”。
保存該宏。
選擇該宏,并轉(zhuǎn)到“工具”-“宏”->“將宏轉(zhuǎn)換為 Visual Basic 代碼”。
假如尚未選中“給生成的函數(shù)加入錯(cuò)誤處理”和“包含宏注釋”,則選中此二者,并單擊“轉(zhuǎn)換”,將該宏轉(zhuǎn)換為具有函數(shù)名的模塊。
保存該模塊。
再次轉(zhuǎn)到該模塊,對其進(jìn)行更改,使用以下的模板:
'------------------------------------------------------------
' 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對于所有的追加查詢,重復(fù)以上過程。
在創(chuàng)建這些模塊之后,您可以刪除那些用于創(chuàng)建這些模塊的宏。
再創(chuàng)建一個(gè)新的宏。
在“操作”中選擇“RunCode”,并從剛才為其所創(chuàng)建的模塊中選擇或鍵入函數(shù)名。為此,雙擊“函數(shù)”->“數(shù)據(jù)庫”,選擇正確的模塊和函數(shù)。
對于同一個(gè)宏中的所有追加查詢都執(zhí)行此過程。
最后,在“操作”中選擇“Quit”,并選擇“退出”選項(xiàng)。
現(xiàn)在執(zhí)行簡單的一步,但卻是最重要的一步:利用以下信息制作一個(gè)批處理文件:
"C:/PRogram Files/Microsoft Office/Office/Msaccess.exe" "database path" /x  Macroname運(yùn)行該批處理文件。
   您可以看到此方法需要大量手動(dòng)工作。需要執(zhí)行很多步驟,并且該過程很容量出錯(cuò)。即使您只做錯(cuò)一步,也很難進(jìn)行反向跟蹤并調(diào)試什么地方出錯(cuò)了。此外,假如您需要重新鏈接表,則會感到困難重重且很費(fèi)時(shí),這取決于要轉(zhuǎn)換的表的數(shù)量。  自動(dòng)方法 第二種移植方法與第一種方法相比具有明顯的優(yōu)勢。 以數(shù)據(jù)類型轉(zhuǎn)換為例。OMW 提供一個(gè)向?qū)碇笇?dǎo)您完成此過程,從而簡化了移植過程。該工具推薦并提供了易于更改的默認(rèn)值。下表列出了一些推薦值: 訪問字段 默認(rèn)值 推薦值
文本 Varchar2(999) Varchar2(999)
數(shù)字 — 長整型 Number(11,0) Number(11,0)
數(shù)字 — 字節(jié)型 Number(3,0) Number(3,0)
數(shù)字 — 整型 Number(5,0) Number(5,0)
日期/時(shí)間 Date Date
布爾型 Number(1,0) Number(1,) 或 char(1)

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕在线亚洲精品 | 九色激情网 | 欧美成年私人网站 | 亚洲午夜久久久精品一区二区三区 | 羞羞网站在线观看入口免费 | 久久亚洲成人 | 欧美精品激情在线 | 欧美日韩在线视频一区 | 国产亚洲精品久久久久久久 | 国产chinesehd精品91 | 99精品视频在线免费观看 | 日本在线播放一区二区三区 | 国产精品一区二区三区在线播放 | 久色亚洲| 欧美黄成人免费网站大全 | 免费黄色在线观看网站 | fc2成人免费人成在线观看播放 | 一区二区三区视频在线观看 | xnxx 美女19| 久久激情国产 | www.48xx.com| 韩国精品一区二区三区四区五区 | 久久精品视频在线看99 | 亚洲午夜国产 | 精品国产一区二区三区成人影院 | 综合精品久久 | 日韩电影一区二区 | 亚洲精品久久久久久下一站 | 免看黄大片aa | 天天操天天碰 | 亚洲精品无码不卡在线播放he | 久久色在线| 热99在线| av免费av | 怦然心动50免费完整版 | 久久久噜噜噜久久熟有声小说 | 欧美日韩高清不卡 | teensexhd| 性aaa| 亚洲影视在线 | 九九视频在线观看6 |