当实现从excel中导数据进入oracel系统中。
先把excel导入到临时表中,然后再从临时表根据导入的参数导入到正式表中,
如果在import参数中不加error row以及error lookup则可以直接导入到系统中。但加入后出现下面问题:
完成上传处理但有错误。请按“关闭”以回到文件并修正错误。上传处理未完成
验证bne:data 要素中的 bne:integrator 属性时发送错误:

解决方案 »

  1.   

    假设与Excel数据文件相对应的职工情况表EMP已在ORAC LE系统中创建,此表中各字段按照顺序分别是职工代号( Emp—No),职工姓名(Ename),工资(Salary),雇用时间(Hiredate)。1、将Excel中的数据装入ORACLE数据库
    通过ORACLE数据库系统的高级应用工具SQL*Loader 可以将原来的Excel中存储的数据直接装入ORACLE数据库的表中。 
    首先,在MicrosoftExcel中完成表格数据输入后,选择“保存文件”命令,在出现对话框的“文件类型”栏中选取“格式化文本文件(空格分隔)”以形成一个标准格式化文本文件(*.PRN)或是选取“CSV(逗号分隔)” 形成一个逗号定界文件(*.CSV)。这两者的区别是:标准格式的文本文件中每个记录等长,数据间按原库文件字段长度紧凑排列,字符型字段数据左对齐,数据型字段数据右对齐,不足部分用空格补足。逗号定界文件特点是各记录可不等长,字段按其定义顺序依次排列,字段间用逗号分隔,字符型字段和数据型字段的左右端空格被消去。
    因为这两种格式文件有不同的数据装入方法,假如我们将职工情况EMP表存为EMP.CSV,数据变成如下形式: 
    120,JOE,1192.64,93/04/11 
    121,KERT,309.60,87/01/14 
    23,PETER,1500.25,84/03/12 
    124,SMITH,678.00,91/01/07 
    15,YOUNG,2390.12,80/05/03 
    接着,通过记事本建立以下控制文件,它包含了数据文件的名称及其格式,文件字段如何定界,数据类型是怎样等内容,将该装载控制文件保存为EMP.CTL: 
    LOADDATA INFILE 'C:\EMP.CSV’BADFILE 'EMP.BAD' DISCARDFILE 'EMP.DSC' APPEND INTOTABLEEMP FILEDS TERMINATED BY "," (Emp-No,Ename,Salary,HiredateDATA(8) "Y Y/MM/DD") 之后,双击SQL*Loader图标,进入ORACLE7的数据装载工具,在弹出的SQLLOADER主屏幕对话框中,分别输入用户登录名,密码,数据库名称和控制文件名,确认后进行数据装载。这样SQL*Loader一边转换、装入数据,一边将执行过程中的错误信息和统计信息存入登录文件(LogFile)中,把ORACLE拒绝装入的原始数据存入拒绝文件(RejectFile)。用户可以在装载完成后,打开登录文件文件查看数据的装载情况,了解因为何种原因使得数据被拒绝,是因为数据本身不符合数据库的数表定义还是违反了完整性原则等其它原因。由此可见,数据装载不仅快速而且安全。 特别要提到的是可以通过SQL*Loader同时将数据文件装入多个数表。例如在Excel表格中输入数据时,可以对应输入该职工参加的项目代号(Proj-No),现在需要将这些数据分别装入EMP表和PROJ表。数据文件按标准格式存储如下所示,其中第5,6,7列均为该职工参加的项目代号: 
    120JOE1192.6493/04/11101112 
    121KERT309.6087/01/142812 
    23PETER1500.2584/03/124017 
    124SMITH678.0091/01/07102021 
    15YOUNG2390.1280/05/03432617 
    编写的装载数据控制文件可以是: 
    LOADDATA INFILE'C:\EMP.PRN'  BADFILE'EMP.BAD' DISCARDFILE 'EMP.DSC' APPEND INTOTABLE EMP(Emp-NoPOSITION(01:05)INTEGER EXTERNAL,EnamePOSITION(06:15)CHAR, SalaryPOSITION(16:25)DECIMAL EXTERNAL, HiredatePOSITION(26:34)INTEGEREXTERNAL) INTOTABLEPROJ WHENProj-No!K'' (Emp-NoPOSITION(1:4)INTEGEREXTERNAL, Proj-NoPOSITION(35:38)INTEGEREXTERNAL) INTOTABLEPROJ WHENProj-No!K'' (Emp-NoPOSITION(1:4)INTEGEREXTERNAL, Proj-NoPOSITION(39:42)INTEGEREXTERNAL) INTOTABLEPROJ WHENProj-No!K'' (Emp-NoPOSITION(1:4)INTEGEREXTERNAL, Proj-NoPOSITION(43:46)INTEGEREXTERNAL) 注意,CHAR,INTEGEREXTERNAL和DECIMALEXTERNAL这些数据类型是指数据文件中的数据类型,而不是数据库中数表的数据类型。数字字段的EXTERNAL暗示了它不是以二进制格式存储的数字,而是以人可以识别的ASCII码格式存储。 这样运行SQL*Loader之后,所需数据被分别装入两个数表,非常方便。 原文地地址:http://database.51cto.com/art/200510/9008.htm
      

  2.   

    谢谢楼上的回答,但是这次要求一定要用webadi实现,所以。。