将Access数据库移植到Oracle
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 从现有系统向 Oracle 数据库的移植过程可能令人畏惧,尤其是现有数据库与 Oracle 数据库结构具有很少的相似性或者没有相似性的时。在本技术说明中,我将对比从 Microsoft Access 移植到 Oracle 的两
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入
从现有系统向 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 Recordset
strConnect = "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.Close
CalMacro_Exit:
Exit Function
CalMacro_Err:
MsgBox Error$
Resume CalMacro_Exit
End Function
对于所有的追加查询,重复以上过程。
在创建这些模块之后,您可以删除那些用于创建这些模块的宏。
再创建一个新的宏。
在“操作”中选择“RunCode”,并从刚才为其所创建的模块中选择或键入函数名。为此,双击“函数”->“数据库”,选择正确的模块和函数。
对于同一个宏中的所有追加查询都执行此过程。
最后,在“操作”中选择“Quit”,并选择“退出”选项。
现在执行简单的一步,但却是最重要的一步:利用以下信息制作一个批处理文件:
"C:\Program Files\Microsoft Office\Office\Msaccess.exe" "database path" /x Macroname
运行该批处理文件。
您可以看到此方法需要大量手动工作。需要执行很多步骤,并且该过程很容量出错。即使您只做错一步,也很难进行反向跟踪并调试什么地方出错了。此外,如果您需要重新链接表,则会感到困难重重且很费时,这取决于要转换的表的数量。
[1] [2]

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









DeepSeek은 파일을 PDF로 직접 변환 할 수 없습니다. 파일 유형에 따라 공통 문서 (Word, Excel, PowerPoint) : Microsoft Office, LibreOffice 및 기타 소프트웨어를 사용하여 PDF로 내보내십시오. 이미지 : 이미지 뷰어 또는 이미지 처리 소프트웨어를 사용하여 PDF로 저장하십시오. 웹 페이지 : 브라우저의 "PDF로 인쇄"기능 또는 전용 웹 페이지에서 PDF 도구를 사용하십시오. 드문 형식 : 오른쪽 변환기를 찾아 PDF로 변환하십시오. 올바른 도구를 선택하고 실제 상황에 따라 계획을 개발하는 것이 중요합니다.

Oracle에 필요한 메모리 양은 데이터베이스 크기, 활동 수준 및 필요한 성능 수준(데이터 버퍼 저장, 인덱스 버퍼, SQL 문 실행 및 데이터 사전 캐시 관리에 필요)에 따라 다릅니다. 정확한 양은 데이터베이스 크기, 활동 수준 및 필요한 성능 수준에 따라 달라집니다. 모범 사례에는 적절한 SGA 크기 설정, SGA 구성 요소 크기 조정, AMM 사용 및 메모리 사용량 모니터링이 포함됩니다.

Oracle 데이터베이스 서버 하드웨어 구성 요구 사항: 프로세서: 기본 주파수가 2.5GHz 이상인 멀티 코어, 대규모 데이터베이스의 경우 32개 이상의 코어가 권장됩니다. 메모리: 소규모 데이터베이스의 경우 최소 8GB, 중간 크기의 경우 16~64GB, 대규모 데이터베이스 또는 과도한 작업 부하의 경우 최대 512GB 이상. 스토리지: SSD 또는 NVMe 디스크, 중복성 및 성능을 위한 RAID 어레이. 네트워크: 고속 네트워크(10GbE 이상), 전용 네트워크 카드, 지연 시간이 짧은 네트워크. 기타: 안정적인 전원 공급 장치, 이중 구성 요소, 호환 가능한 운영 체제 및 소프트웨어, 열 방출 및 냉각 시스템.

Oracle 데이터베이스에 필요한 메모리 양은 데이터베이스 크기, 작업 부하 유형 및 동시 사용자 수에 따라 다릅니다. 일반 권장 사항: 소형 데이터베이스: 16~32GB, 중형 데이터베이스: 32~64GB, 대형 데이터베이스: 64GB 이상. 고려해야 할 다른 요소로는 데이터베이스 버전, 메모리 최적화 옵션, 가상화 및 모범 사례(메모리 사용량 모니터링, 할당 조정)가 있습니다.

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

Golang의 데이터베이스 콜백 기능을 사용하면 다음을 달성할 수 있습니다. 지정된 데이터베이스 작업이 완료된 후 사용자 정의 코드를 실행합니다. 추가 코드를 작성하지 않고도 별도의 함수를 통해 사용자 정의 동작을 추가할 수 있습니다. 삽입, 업데이트, 삭제, 쿼리 작업에 콜백 함수를 사용할 수 있습니다. 콜백 함수를 사용하려면 sql.Exec, sql.QueryRow, sql.Query 함수를 사용해야 합니다.
