壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7677|回复: 15

求用存储过程实现文件导入的例子!!

[复制链接]
发表于 2007/3/1 13:39:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
各位大侠,是否有用stored procedure写的导入.csv文件的例子,需要可以在application中输入相关的parameters.
有资源的大侠,麻烦共享一下吧!
谢谢啦!
发表于 2007/3/1 16:06:11 | 显示全部楼层
插入一个文件到DB中
conn system/system
grant create any directory to test;
conn test/test
create table demo (id int primary key,theclob clob);
create or replace directory my_file as ‘d:’;
create or replace procedure load_a_file(p_id in number,
p_filename in varchar2) as
l_clob clob;
l_bfile bfile;
begin
insert into demo
values
(p_id, empty_clob())
returning theClob into l_clob;
l_bfile := bfilename('MY_FILES', p_filename);
dbms_lob.fileopen(l_bfile);
dbms_lob.loadfromfile(l_clob, l_bfile, dbms_lob.getlength(l_bfile));
dbms_lob.fileclose(l_bfile);
end;
exec load_a_file( 1, 'index.html' );
 楼主| 发表于 2007/3/1 16:17:52 | 显示全部楼层

回复 #2 appleteam 的帖子

这是插入一个文件的方法,怎么样读出一个数据文件(.csv文件,以‘,’分隔)的每一列的值,并将其插入呢?
谢谢!
发表于 2007/3/1 16:26:49 | 显示全部楼层
给你个简单的例子吧,我以前写的导入成本用的,比较简单,你可以参考一下

需要注意的是要设定好你要使用的数据库目录,可以通过 Select * From All_Directories 来查看当前数据库的所有文件目录以及所有者。

Cost Importing.rar

1.5 KB, 下载次数: 77, 下载积分: 努力值 -5 点

物料成本导入

 楼主| 发表于 2007/3/1 16:42:05 | 显示全部楼层

回复 #4 bhbb2000 的帖子

感谢大虾!!!!!对我非常有用!

[ 本帖最后由 junion1980 于 2007-3-1 16:44 编辑 ]
发表于 2007/3/2 08:27:39 | 显示全部楼层
如果是数据导入有很多方法,比如,用PL/SQL DEVELOPER可以直接从EXCEL中COPY然后PASTE就可以了,什么程序都不用写
 楼主| 发表于 2007/3/2 09:58:03 | 显示全部楼层

回复 #6 appleteam 的帖子

因为还有程序逻辑判断,所以用存储过程 :)
发表于 2007/3/14 22:41:48 | 显示全部楼层
感谢各位的东东,我收啊
发表于 2007/3/15 07:32:23 | 显示全部楼层
:) :)
发表于 2007/4/1 22:40:26 | 显示全部楼层
CSV的解析导入可以用sqlload,需要例子吗?
发表于 2007/4/2 09:40:05 | 显示全部楼层
希望提供例子,这个问题我也碰到过。
发表于 2007/4/2 15:16:19 | 显示全部楼层
原帖由 jeep123 于 2007-4-2 09:40 发表
希望提供例子,这个问题我也碰到过。

恩?上面给出例子了
发表于 2007/4/2 17:57:29 | 显示全部楼层

一直在用过程直接读CSV/TXT文件数据

PROCEDURE read_costmain_file(file_name varchar2,.......)
  IS
   vSFile       utl_file.file_type;
   vNewLine   VARCHAR2(2000);
    l_separate_sign varchar2(10); 分割符
   
  BEGIN
          l_separate_sign := 'chr(9)';
     
        vSFile:=utl_file.fopen('/usr/tmp',file_name,'r');
        IF   utl_file.is_open(vSFile)   THEN
         LOOP
           BEGIN
                 utl_file.get_line(vSFile, vNewLine);
                  
                 IF   vNewLine   IS   NULL   THEN
                       EXIT;
                 END   IF;
                  
                 insert into ........              
                        
                     
               EXCEPTION
                  WHEN   NO_DATA_FOUND   THEN
                  EXIT;
               END;
           END   LOOP;
      
           COMMIT;
        END  IF;
        utl_file.fclose(vSFile);
  EXCEPTION
      WHEN   utl_file.invalid_mode   THEN
          RAISE_APPLICATION_ERROR   (-20051,   'Invalid   Mode   Parameter');
      WHEN   utl_file.invalid_path   THEN
          RAISE_APPLICATION_ERROR   (-20052,   'Invalid   File   Location');
      WHEN   utl_file.invalid_filehandle   THEN
          RAISE_APPLICATION_ERROR   (-20053,   'Invalid   Filehandle');
      WHEN   utl_file.invalid_operation   THEN
          RAISE_APPLICATION_ERROR   (-20054,   'Invalid   Operation');
      WHEN   utl_file.read_error   THEN
          RAISE_APPLICATION_ERROR   (-20055,   'Read   Error');
      WHEN   utl_file.internal_error   THEN
          RAISE_APPLICATION_ERROR   (-20057,   'Internal   Error');
      WHEN   utl_file.invalid_maxlinesize   THEN
          RAISE_APPLICATION_ERROR(-20060,'Line   Size   Exceeds   32K');
     WHEN   others   THEN
          RAISE_APPLICATION_ERROR(-20002, sqlerrm); --(-20099,   'Unknown   UTL_FILE   Error');
  END   ;
发表于 2009/6/30 14:28:46 | 显示全部楼层
学习中,谢谢
发表于 2009/6/30 14:33:23 | 显示全部楼层
我现在用的方法是用java存储过程实现的,通过java的excel数据包读取已经上传到数据库表或者是文件系统的EXCEL文件,解析后转存到临时表中.
发表于 2010/5/28 08:12:47 | 显示全部楼层
很有帮助,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 17:15 , Processed in 0.017802 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表