`
lveyo
  • 浏览: 915344 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle与Access表之间的导入和导出实现

阅读更多
问题的提出:如何在FORM的程序中实现Oracle与Access表之间的导入和导出。

  问题的解答:

  准备工作:

  1.安装OCA。运行Developer的安装盘,选择自定义安装,选择Oracle Open Client Adapter for ODBC安装。

  2.在数据源(ODBC)中添加DSN。控制面板->管理工具->数据源(ODBC),选择“用户DSN”,添加要进行操作的Access的文件。在“高级”选项里,填上“登录名称”和“密码”(很重要,在程序中会用到)。

  下面以实际例子来说明:

  假设在Oracle中和Access中都有一个student表,表中字段相同(name char(10) ,age number(2)),在准备工作2中的“数据源名”为test,“登录名称”和“密码”都为user。

  下面为从Oracle导出到Access的procedure:

 

PROCEDURE oracle_to_access IS
  connection_id EXEC_SQL.ConnType;
  action_cursor EXEC_SQL.CursType;
  ignore PLS_INTEGER;
  t_name student.name
%type;
  t_age student.age
%type;
  
cursor temp_cursor is select * from student;
  
BEGIN
  connection_id:
= EXEC_SQL.OPEN_CONNECTION('user/user@odbc:test');
  action_cursor :
= EXEC_SQL.OPEN_CURSOR(connection_id);
  EXEC_SQL.PARSE(connection_id, action_cursor,
'delete * from student');
  ignore :
= EXEC_SQL.EXECUTE(connection_id, action_cursor);
  EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor);
  
open temp_cursor;
  export_count :
= 0;
  action_cursor :
= EXEC_SQL.OPEN_CURSOR(connection_id);
  EXEC_SQL.PARSE(connection_id, action_cursor,
'INSERT INTO student(name,age) values(:1,:2)');
  loop
  
fetch temp_cursor into t_name,t_age;
  
exit when temp_cursor%notfound;
  EXEC_SQL.BIND_VARIABLE(connection_id,action_cursor, 
':1', t_name);
  EXEC_SQL.BIND_VARIABLE(connection_id,action_cursor, 
':2', t_age);
  ignore :
= EXEC_SQL.EXECUTE(connection_id, action_cursor);
  
end loop;
  
close temp_cursor;
  EXEC_SQL.PARSE(connection_id, action_cursor,
'commit');
  ignore :
= EXEC_SQL.EXECUTE(connection_id,action_cursor);
  EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor);
  EXEC_SQL.CLOSE_CONNECTION(connection_id);
  EXCEPTION
  
WHEN EXEC_SQL.PACKAGE_ERROR THEN
  
IF EXEC_SQL.LAST_ERROR_CODE(connection_id) != 0 THEN
  message(
'数据导出至ACCESS失败: ' || TO_CHAR(EXEC_SQL.LAST_ERROR_CODE (connection_id)) || '' || EXEC_SQL.LAST_ERROR_MESG(connection_id));
  
END IF;
  
IF EXEC_SQL.IS_CONNECTED(connection_id) THEN
  
IF EXEC_SQL.IS_OPEN(connection_id,action_cursor) THEN
  EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor);
  
END IF;
  EXEC_SQL.CLOSE_CONNECTION(connection_id);
  
END IF;
  
END;
  下面为从Access导出到Oracles的procedure:
  
PROCEDURE Access_to_oracle IS
  connection_id EXEC_SQL.ConnType;
  action_cursor EXEC_SQL.CursType;
  ignore PLS_INTEGER;
  t_name student.name
%type;
  t_age student.age
%type;
  
BEGIN
  connection_id :
= EXEC_SQL.OPEN_CONNECTION('user/user@odbc:test');
  action_cursor :
= EXEC_SQL.OPEN_CURSOR(connection_id);
  
delete from student;
  EXEC_SQL.PARSE(connection_id, action_cursor,
'select name,age from student');
  ignore :
= EXEC_SQL.EXECUTE(connection_id, action_cursor);
  exec_sql.define_column(connection_id,action_cursor,
1,t_name,10);
  exec_sql.define_column(connection_id,action_cursor,
2,t_age);
  ignore :
= EXEC_SQL.EXECUTE(connection_id, action_cursor);
  
while(exec_sql.fetch_rows(connection_id,action_cursor)>0)
  loop
  exec_sql.column_value(connection_id,action_cursor,
1,t_name);
  exec_sql.column_value(connection_id,action_cursor,
2,t_age);
  
insert into test(name,age) values(t_name,t_age);
  
end loop;
  
commit;
  EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor);
  EXEC_SQL.CLOSE_CONNECTION(connection_id);
  EXCEPTION
  
WHEN EXEC_SQL.PACKAGE_ERROR THEN
  
IF EXEC_SQL.LAST_ERROR_CODE(connection_id) != 0 THEN
  message(
'数据导入至ORACLE失败: ' || TO_CHAR(EXEC_SQL.LAST_ERROR_CODE (connection_id)) || '' || EXEC_SQL.LAST_ERROR_MESG(connection_id));
  
END IF;
  
IF EXEC_SQL.IS_CONNECTED(connection_id) THEN
  
IF EXEC_SQL.IS_OPEN(connection_id,action_cursor) THEN
  EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor);
  
END IF;
  EXEC_SQL.CLOSE_CONNECTION(connection_id);
  
END IF;
  
END;

 

 注意:EXEC_SQL.BIND_VARIABLE中绑定的变量只能是以下三种类型:NUMBER,DATE,VARCHAR2。对于Access中的 “是/否”的布尔型变量,可以用NUMBER类型的1和0来表示。如果Access中的表名或者字段名中有空格,在写SQL语句的时候可以用双引号把表名 或者字段名包括起来,如:本例中如果Access中表名为student detail,字段名分别为student name和student age,那插入数据的SQL语句为:insert into “student detail”(“student name”,”student age”) values(:1,:2)。

本文引用地址:http://www.tenwe.com/tech/database/oracle/200701/content_285.shtml
分享到:
评论

相关推荐

    Oracle和Access表之间的导入和导出

    下面将详细介绍如何在FORM的程序中实现Oracle和Access表之间的导入与导出。 首先,了解Oracle和Access的基础特性。Oracle是一款企业级的关系型数据库管理系统,支持大型复杂的数据处理,具有高度的可扩展性和安全性...

    Oracle与Access表之间的导入和导出

    本文将详细讲解如何在 Oracle 的 FORM 程序中实现这两个系统之间的数据导入和导出。 首先,为了在 Oracle 和 Access 之间建立连接,我们需要完成以下准备工作: 1. 安装 OCA (Oracle Call Interface for ODBC)。这...

    如何将Access表中的数据导入到ORACLE中

    将 Access 表中的数据导入到 ORACLE 中 在本文中,我们将讨论如何将 Access 表中的数据导入到 ORACLE 中的两种方法。这些方法将指导您如何使用 ODBC 连接将数据从 Access 导入到 ORACLE 中。 方法一:使用 ODBC ...

    access数据库MDB数据文件导入oracle数据库操作步骤.pdf

    将 Access 数据库 MDB 文件导入 Oracle 数据库可以实现数据的迁移和整合。以下是将 Access 数据库 MDB 文件导入 Oracle 数据库的操作步骤: Step 1: 打开 PL/SQL 工具 要将 Access 数据库 MDB 文件导入 Oracle ...

    access导入到oracle数据库工具

    4. **数据导出**:将Access数据库中的表结构和数据导出成可以被Oracle识别的格式,比如CSV或XML文件。 5. **数据导入**:在Oracle环境中创建与Access相同或类似的表结构,然后将导出的数据导入到这些表中。这个过程...

    sql.access等的导入导出

    本资源提供了一个关于sql与access之间数据导入导出的工具和代码,这对于需要在这两个系统间进行数据交换的用户来说,具有很大的实用价值。 SQL是一种用于管理关系型数据库的标准语言,它支持创建、查询、更新和删除...

    MySQL数据库:数据的导入与导出.pptx

    MySQL 数据库与 Access 数据库之间可以实现数据的导入与导出。 * 导出:将数据从 MySQL 源数据库复制到 *.accdb 数据文件。 * 导入:将 *.accdb 数据文件加载到 MySQL 数据库中。 MySQL 与 SQLServer 的导入与导出...

    将Access数据导入到Oracle数据库小程序

    开发者编写了这样一个程序,用于用户交互,实现数据的导出选择和导入操作。用户可以选择Access中的表和字段,然后将它们映射到Oracle的相应结构中。 **关键步骤** 1. **连接Access**:使用ADO.NET中的Jet .NET提供...

    数据的导入导出工具 能迁移dmp\dbf\sqlserver\access等数据

    数据的导入导出工具在IT领域中扮演着至关重要的角色,尤其对于数据库管理和维护工作而言。这类工具能够方便地将数据从一个环境迁移到另一个环境,或者在不同的数据库系统之间进行转换。标题和描述中提到的数据迁移...

    浅谈基于第三方工具的Excel到Oracle数据库之间的数据导入导出方法.pdf

    为了实现Excel与Oracle数据库之间的数据交换,我们可以借助第三方工具,如TOAD(Tool for Oracle Application Developers)。TOAD是由Quest Software开发的一款高效、易用的Oracle应用开发和管理工具,特别适合...

    通用数据库格式转换工具旧版本,不要下载,支持oracle,sqlsever,access等数据库之间数据格式转换

    完成表的创建(含字段的约束:默认值,是否为空,和的主键),数据的导入,导出。转换速度快,有完整的转换日志,有那个数据无法转换,可以精确定位。有其他特殊需要和问题,都可以发Email:gisoracle@126.com,定会...

    Oracle to Access 程序源码

    Oracle到Access程序源码是一个基于.NET平台,使用C#编程语言实现的应用,旨在将Oracle数据库中的数据导出到Excel文件,然后可能进一步导入到Access数据库中。这个过程涉及到多个技术领域,包括数据库连接、数据查询...

    数据库与xml的导入导出

    本主题主要探讨如何在SQL Server、Oracle、MySQL和Access这些常见的数据库系统中进行XML的导入与导出操作。 一、SQL Server中的XML导入导出 1. 导出XML:SQL Server提供了`FOR XML`子句,允许将查询结果以XML格式...

    Oracle 转Access 工具 OracleToAccess

    3. **映射字段**:由于Oracle和Access的数据类型可能存在差异,OracleToAccess提供了字段映射功能,可以自动或手动调整源数据库字段与目标数据库字段之间的对应关系,确保数据转换的准确性。 4. **批量转换**:对于...

    excle批量导入导出

    - **外部数据源**:Excel支持与各种外部数据源建立连接,如SQL Server、Oracle、Access等,可以实时更新数据。 - **刷新数据**:一旦建立连接,可以通过“数据”菜单下的“刷新所有”命令获取最新数据,实现批量...

    通用数据库格式转换工具V1.1最新版,支持oracle,sqlsever,access等数据库之间数据格式转换

    完成表的创建(含字段的约束:默认值,是否为空,和的主键),数据的导入,导出。转换速度快,有完整的转换日志,有那个数据无法转换,可以精确定位。有其他特殊需要和问题,都可以发Email:gisoracle@126.com,定会...

    通用数据库格式转换工具,支持oracle,sqlsever,access等数据库之间数据格式转换

    完成表的创建(含字段的约束:默认值,是否为空,和的主键),数据的导入,导出。转换速度快,有完整的转换日志,有那个数据无法转换,可以精确定位。有其他特殊需要和问题,都可以发Email:gisoracle@126.com,定会...

    用plsql将mdb文件导入到oracle数据库中

    - **定义**:ODBC(Open Database Connectivity)是一种开放的标准API,用于实现应用程序与多种数据库管理系统之间的连接。 - **配置方法**: - 打开ODBC数据源管理器,选择“用户DSN”或“系统DSN”,根据需求创建新...

    如何实现将Excel、Access、FoxPox数据导入Oracle数据库.pdf

    然而,有时我们需要从其他数据源,如Excel、Access或FoxPro,导入数据到Oracle数据库。这个过程可以分为几个关键步骤,下面将详细解释如何实现这一操作。 首先,我们关注Excel数据的导入。Excel是一种常用的电子...

    数据库导入导出总结(SQL语句)

    本文将基于给定的代码片段和描述,详细介绍如何使用SQL语句进行不同数据库之间的数据导入导出操作。 #### Access 数据库 **Access -> TXT** ```delphi procedure TForm1.Button1Click(Sender: TObject); begin ...

Global site tag (gtag.js) - Google Analytics