`

oracle 存储过程读取文件 插入数据库

阅读更多

网上搜索到的文章

http://blog.csdn.net/jiangfeng08/article/details/5718456

 

http://www.cnblogs.com/OceanChen/archive/2009/02/11/1388185.html

 

 

http://cnhnslhs-163-com.iteye.com/blog/1343678

 

 

 

自己的需求 读txt 文件,改变表字段的值

update_customer_rank.txt的格式如下:

13123423126
13123423123
13123423125
13123423121
13123423122

 

 

 

代码如下:

--创建目录    
    create or replace directory MYFILEDIR as '/unicom-masc';
    
    GRANT READ, WRITE  ON DIRECTORY MYFILEDIR TO mascbj;
    

--从文件中读取手机号码更改ibs_customer的rank的值    
    CREATE OR REPLACE PROCEDURE UPDATE_CUSTOMER_RANK_BYFILE(V_FILEPATH VARCHAR2,--文件路径  
                                          V_FILENAME VARCHAR2,--文件名称  
                                          V_ROWS     OUT NUMBER)--返回处理记录数  
      
    AUTHID CURRENT_USER AS  
      V_FILE_HANDLE UTL_FILE.FILE_TYPE;  
      V_SQL         VARCHAR2(2000);  
      
      IS_EXISTS NUMBER(10);  
      MAX_ID    NUMBER(10);  
      COL1      VARCHAR2(1000);  
     type c_cursor       IS REF CURSOR;  
     c1 c_cursor;  
     --V_ROWS NUMBER(10);  
    BEGIN     
      --创建表  
      SELECT COUNT(*) INTO IS_EXISTS  FROM USER_OBJECTS  WHERE OBJECT_TYPE = 'TABLE'  AND OBJECT_NAME = 'IBS_CUS_RANK_TEMP';  
      IF IS_EXISTS = 0 THEN  
        V_SQL := 'CREATE TABLE IBS_CUS_RANK_TEMP  
                  (  
                    ID       INTEGER NOT NULL,  
                    Mobile      VARCHAR2(20)  
                  )';  
        EXECUTE IMMEDIATE V_SQL;  
      END IF;  
      
      --创建序列,序列最小值为IBS_CUS_RANK_TEMP表中是最大ID+1  
      open c1 for 'select nvl(max(id),0)+1 from IBS_CUS_RANK_TEMP';  
      fetch c1 into MAX_ID;  
      close c1;  
      V_SQL := 'DROP SEQUENCE SEQ_IBS_CUS_RANK_TEMP';   
      begin  
            EXECUTE IMMEDIATE V_SQL;  
      exception when others then  
                null;  
      end;  
      V_SQL := ' create  sequence SEQ_IBS_CUS_RANK_TEMP  
                    minvalue '||MAX_ID||'  
                    maxvalue 99999999  
                    start with '||MAX_ID||'  
                    increment by 1  
                    cache 20';   
      EXECUTE IMMEDIATE V_SQL;  
       
      
      V_FILE_HANDLE := UTL_FILE.FOPEN('MYFILEDIR', V_FILENAME, 'R');  
      V_ROWS        := 0; --处理记录数  
      LOOP  
        BEGIN  
          --将文件信息读取到COL1中,每次读取一行  
          UTL_FILE.GET_LINE(V_FILE_HANDLE, COL1);  
          
          --取序列值       
          open c1 for 'select SEQ_IBS_CUS_RANK_TEMP.nextval from dual';  
          fetch c1 into MAX_ID;  
          close c1;
            
          --插入数据   
          execute immediate 'INSERT INTO IBS_CUS_RANK_TEMP  
            (ID,Mobile) VALUES  (:1,:2)'  
          using MAX_ID,substr(COL1,0,LENGTH(COL1)-1);    
            
          
          execute immediate 'update ibs_customer set rank=4 where name=:1'
          using substr(COL1,0,LENGTH(COL1)-1);
          
          V_ROWS := V_ROWS + 1;
          
          --每5000条提交一次  
          IF MOD(V_ROWS, 5000) = 0 THEN  
            COMMIT;  
          END IF;  
          
        EXCEPTION  
          WHEN NO_DATA_FOUND THEN  
            EXIT;  
          WHEN OTHERS THEN  
            NULL;  
        END;  
      END LOOP;  
      COMMIT;  
      --关闭  
      UTL_FILE.FCLOSE(V_FILE_HANDLE);  
      --dbms_output.put_line(V_ROWS);   
       
      
    END UPDATE_CUSTOMER_RANK_BYFILE;
   
    
--调用    
    DECLARE  
    V_ROWS NUMBER(10);  
    BEGIN  
    UPDATE_CUSTOMER_RANK_BYFILE(v_filepath =>'/unicom-masc',  
               v_filename =>'update_customer_rank.txt',  
               v_rows =>v_rows);  
    END;

 

 

 

分享到:
评论

相关推荐

    oracle blob转文件读取

    在软件开发过程中,尤其是在处理数据库中的二进制大对象(Binary Large Object, 简称BLOB)时,经常需要将数据库中的BLOB数据转换为文件进行读取或处理。本文将详细介绍如何使用C#语言结合Oracle数据库实现这一功能...

    oracle向数据库里插入图片

    在Oracle数据库中插入图片涉及到BLOB(Binary Large Object)数据类型,这是Oracle用来存储大量二进制数据,如图片、音频或视频文件等的一种方式。本文将详细介绍如何在Oracle数据库中插入、查询和管理图片。 首先...

    Oracle_存储过程实现数据库导入导出xml文件

    知识点:Oracle 存储过程实现数据库导入导出 XML 文件 在 Oracle 数据库中,使用存储过程来实现 XML 文件的导入导出是一种高级且灵活的方法,它允许开发者在服务器端直接处理 XML 数据,避免了客户端与服务器之间的...

    用java编程将txt文件数据导入oracle

    在 txtToDb 方法中,我们首先链接 Oracle 数据库,然后读取 TXT 文件中的数据,并将其导入 Oracle 数据库。最后,我们关闭数据库连接和读取器。 程序优点: 1. 高效:该程序可以快速将大量 TXT 文件中的数据导入 ...

    使用oracle存储过程将xml文件数据导入数据库

    总结,使用Oracle存储过程导入XML文件数据涉及的关键步骤包括创建匹配的表结构、编写存储过程以解析XML并插入数据,以及调用存储过程执行导入。通过这种方式,可以高效地处理大量XML数据的导入工作,同时保持数据库...

    利用GDAL2.1.2库 把shp文件导入 oracle数据库中 例子

    4. **分批次导入数据**:遍历Shapefile的数据集,逐个要素(Feature)读取其几何和属性信息,然后使用Oracle的INSERT语句将数据插入到数据库表中。由于Shapefile可能包含大量数据,建议分批次进行,以避免内存溢出或...

    C# Winform访问Oracle数据库

    Oracle则是一种强大的关系型数据库管理系统,被许多企业和组织用于存储和管理大量数据。本教程将详细介绍如何使用C#的WinForms来访问和操作Oracle数据库。 首先,要实现C# WinForm应用与Oracle数据库的交互,你需要...

    读取execl文件,并写入 Oracle

    本教程将详述如何使用Delphi编程语言结合Excel文件来读取特定列的信息,并将其高效地写入Oracle数据库。首先,我们需要理解Delphi、Excel文件处理以及Oracle数据库的基本概念。 Delphi是一种基于Object Pascal的...

    易语言连接Oracle数据库

    数据库连接组件用于建立与Oracle数据库的物理连接,而记录集组件则负责在程序中操作数据,如查询、插入、更新和删除记录。 1. 数据库连接组件: - 在易语言中,设置数据库连接通常涉及以下参数: - 数据源(DSN)...

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...

    oracle实现数据库的备份与还原

    C#可以通过读取备份文件,再使用Oracle的Import功能或直接插入SQL语句来完成。 - **不完全还原**:仅恢复部分数据或到特定时间点。这涉及到Oracle的时间点恢复,需要RMAN和归档日志的参与,C#程序需要调用RMAN命令...

    如何通过txt文件批量导入数据到oracle数据库

    我们需要编写一个控制文件(.ctl文件),它定义了如何解析TXT文件和如何将数据插入到数据库表中。 4. **编写控制文件**:控制文件包含了关于如何读取TXT文件和加载数据的具体指令。例如,指定字段的分隔符、是否...

    c#Blob图片在oracle上读取、保存、上传

    c#-操作数据库oracle的小代码,提供用于学习。代码主要实现从oracle读取、保存、上传图片等功能,使用了Oracle.DataAccess.dll,想了解相关知识的欢迎下载,有问题的请给我留言,谢谢。

    访问ORACLE存储过程

    在.NET环境中,访问Oracle存储过程是一项常见的任务,用于执行数据库中的复杂操作,如数据处理、事务管理和业务逻辑。本文将详细介绍如何使用OracleClient数据提供者在C#中调用存储过程,包括带输入、输出参数的存储...

    oracle数据库的表数据导出为csv文件

    通过上述分析,我们可以了解到利用Oracle PL/SQL编写存储过程或函数来实现表数据导出为CSV文件的具体步骤。这种方式不仅能够提高工作效率,还能确保数据的安全性和准确性。此外,通过创建通用的函数还可以进一步提升...

    oracle 存储过程,批量产生用

    根据给定的文件信息,本文将深入探讨Oracle存储过程如何用于批量创建用户,以及如何读取TXT文件来辅助这一过程。 ### Oracle存储过程概述 Oracle存储过程是预编译并存储在Oracle数据库中的SQL和PL/SQL代码块。它们...

    轻松将Excel的xls格式文件导入到Oracle数据库

    2. **PL/SQL程序**:编写PL/SQL存储过程或函数,通过Oracle的API接口(如UTL_FILE)读取xls文件,然后逐行插入到数据库表中。这种方法适合对数据处理有特定需求的情况,如数据清洗、验证等。 3. **第三方工具**:...

    图片批量导入oracle数据库

    Oracle数据库作为一款强大的关系型数据库管理系统,支持多种类型的数据存储,包括BLOB(Binary Large Object)类型,适合存放图片等二进制文件。 首先,我们需要理解Java在此过程中的作用。Java是一种多平台的编程...

    定时读取excel更新到数据库

    综上所述,实现“定时读取Excel更新到数据库”的过程涉及到多个环节,包括定时任务设置、数据读取、处理、数据库交互以及异常处理。正确配置和执行这些步骤,可以确保从Excel文件高效、准确地获取并更新数据库中的...

    从数据库读取图片文件

    3. **存储过程**:将图片文件存储到数据库通常涉及一个存储过程,该过程接收图片文件作为输入,读取文件内容,然后将其插入到BLOB字段中。 4. **图片上传**:在前端,用户可以通过网页表单或API接口上传图片。图片...

Global site tag (gtag.js) - Google Analytics