网上搜索到的文章
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;
分享到:
相关推荐
在软件开发过程中,尤其是在处理数据库中的二进制大对象(Binary Large Object, 简称BLOB)时,经常需要将数据库中的BLOB数据转换为文件进行读取或处理。本文将详细介绍如何使用C#语言结合Oracle数据库实现这一功能...
在Oracle数据库中插入图片涉及到BLOB(Binary Large Object)数据类型,这是Oracle用来存储大量二进制数据,如图片、音频或视频文件等的一种方式。本文将详细介绍如何在Oracle数据库中插入、查询和管理图片。 首先...
知识点:Oracle 存储过程实现数据库导入导出 XML 文件 在 Oracle 数据库中,使用存储过程来实现 XML 文件的导入导出是一种高级且灵活的方法,它允许开发者在服务器端直接处理 XML 数据,避免了客户端与服务器之间的...
在 txtToDb 方法中,我们首先链接 Oracle 数据库,然后读取 TXT 文件中的数据,并将其导入 Oracle 数据库。最后,我们关闭数据库连接和读取器。 程序优点: 1. 高效:该程序可以快速将大量 TXT 文件中的数据导入 ...
总结,使用Oracle存储过程导入XML文件数据涉及的关键步骤包括创建匹配的表结构、编写存储过程以解析XML并插入数据,以及调用存储过程执行导入。通过这种方式,可以高效地处理大量XML数据的导入工作,同时保持数据库...
4. **分批次导入数据**:遍历Shapefile的数据集,逐个要素(Feature)读取其几何和属性信息,然后使用Oracle的INSERT语句将数据插入到数据库表中。由于Shapefile可能包含大量数据,建议分批次进行,以避免内存溢出或...
Oracle则是一种强大的关系型数据库管理系统,被许多企业和组织用于存储和管理大量数据。本教程将详细介绍如何使用C#的WinForms来访问和操作Oracle数据库。 首先,要实现C# WinForm应用与Oracle数据库的交互,你需要...
本教程将详述如何使用Delphi编程语言结合Excel文件来读取特定列的信息,并将其高效地写入Oracle数据库。首先,我们需要理解Delphi、Excel文件处理以及Oracle数据库的基本概念。 Delphi是一种基于Object Pascal的...
数据库连接组件用于建立与Oracle数据库的物理连接,而记录集组件则负责在程序中操作数据,如查询、插入、更新和删除记录。 1. 数据库连接组件: - 在易语言中,设置数据库连接通常涉及以下参数: - 数据源(DSN)...
Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...
C#可以通过读取备份文件,再使用Oracle的Import功能或直接插入SQL语句来完成。 - **不完全还原**:仅恢复部分数据或到特定时间点。这涉及到Oracle的时间点恢复,需要RMAN和归档日志的参与,C#程序需要调用RMAN命令...
我们需要编写一个控制文件(.ctl文件),它定义了如何解析TXT文件和如何将数据插入到数据库表中。 4. **编写控制文件**:控制文件包含了关于如何读取TXT文件和加载数据的具体指令。例如,指定字段的分隔符、是否...
c#-操作数据库oracle的小代码,提供用于学习。代码主要实现从oracle读取、保存、上传图片等功能,使用了Oracle.DataAccess.dll,想了解相关知识的欢迎下载,有问题的请给我留言,谢谢。
在.NET环境中,访问Oracle存储过程是一项常见的任务,用于执行数据库中的复杂操作,如数据处理、事务管理和业务逻辑。本文将详细介绍如何使用OracleClient数据提供者在C#中调用存储过程,包括带输入、输出参数的存储...
通过上述分析,我们可以了解到利用Oracle PL/SQL编写存储过程或函数来实现表数据导出为CSV文件的具体步骤。这种方式不仅能够提高工作效率,还能确保数据的安全性和准确性。此外,通过创建通用的函数还可以进一步提升...
根据给定的文件信息,本文将深入探讨Oracle存储过程如何用于批量创建用户,以及如何读取TXT文件来辅助这一过程。 ### Oracle存储过程概述 Oracle存储过程是预编译并存储在Oracle数据库中的SQL和PL/SQL代码块。它们...
2. **PL/SQL程序**:编写PL/SQL存储过程或函数,通过Oracle的API接口(如UTL_FILE)读取xls文件,然后逐行插入到数据库表中。这种方法适合对数据处理有特定需求的情况,如数据清洗、验证等。 3. **第三方工具**:...
Oracle数据库作为一款强大的关系型数据库管理系统,支持多种类型的数据存储,包括BLOB(Binary Large Object)类型,适合存放图片等二进制文件。 首先,我们需要理解Java在此过程中的作用。Java是一种多平台的编程...
综上所述,实现“定时读取Excel更新到数据库”的过程涉及到多个环节,包括定时任务设置、数据读取、处理、数据库交互以及异常处理。正确配置和执行这些步骤,可以确保从Excel文件高效、准确地获取并更新数据库中的...
3. **存储过程**:将图片文件存储到数据库通常涉及一个存储过程,该过程接收图片文件作为输入,读取文件内容,然后将其插入到BLOB字段中。 4. **图片上传**:在前端,用户可以通过网页表单或API接口上传图片。图片...