利用SQLLoader将 Excel 数据导出到 Oracle 数据库中

系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库:Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:\ORACLE
实现步骤:
1、打开MicroSoft Excel 2000
2、文件(F)→新建(N)→工作簿→
3、输入以下数据,存盘为test.xls,如图:
4、文件(F)→另存为(A)→
保存类型为:制表符分隔,起名为text.txt,保存到C:
5、连入SQL*Plus
以system/manager用户登录,
SQL> conn system/manager
创建表结构
SQL> create table test
(
id number,--序号
username varchar2(10),--用户名
password varchar2(10),--密码
sj varchar2(20)--建立日期
);
6、创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑:控制文件:input.ctl,内容如下:
load data--1、控制文件标识
infile 'test.txt'--2、要输入的数据文件名为test.txt
append into table test--3、向表test中追加记录
fields terminated by X'09'--4、字段终止于X'09',是一个制表符(TAB)(id,username,password,sj)-----定义列对应顺序
a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录,替换成新装载的记录
d、truncate,同上
7、在DOS窗口下使用SQL*Loader命令实现数据的输入
C:\>sqlldr userid=system/manager control=input.ctl
默认日志文件名为:input.log
默认坏记录文件为:input.bad
8、连接到SQL*Plus中,查看是否成功输入。

合集下载

Excel转换为sql语句导入Oracle数据库

Excel转换为sql语句导入Oracle数据库

Excel转换为sql语句导入Oracle数据库2009年01月16日星期五 20:33package excel;import java.io.File;import java.io.FileWriter;import java.io.IOException;import jxl.Sheet;import jxl.Workbook;public class ExcelToInsert {public static void main(String[] args) {String table_name = "OPERATION_FILTER"; //在此输入表名int ID = 0;int OPERATION_ID = 0;int USER_ID = 0;int STATUS = 0;String USER_CN = "";String USER_NAME = "";String SQL = "";final String EXL_NAME = "OPERATION_FILTER";final String BASE_PATH = "D:/data/"; // BasePathfinal String IN_EXL_PATH = BASE_PATH + EXL_NAME + ".xls"; // excelPath StringBuffer sb = null;FileWriter fw = null;int rows = 0;int columns = 0;try {fw = new FileWriter(BASE_PATH + EXL_NAME + ".sql");final String start = "REM INSERTING into " + table_name;fw.write(start + "\r\n"); // newline// read excel filetry {Workbook rwb = Workbook.getWorkbook(new File(IN_EXL_PATH));Sheet rs[] = rwb.getSheets();for (int i = 0; i < rs.length; i++) {rows = rs[i].getRows();columns = rs[i].getColumns();System.out.println(columns+","+rows);String[] ldapattr = new String[columns];for (int j = 0; j < rows; j++) {if (j == 0) {for (int g = 0; g < columns; g++) {ldapattr[g] = rs[i].getCell(g, j).getContents();}continue;}sb = new StringBuffer();sb = sb.append("\r\n");ID = Integer.parseInt(rs[i].getCell(0, j).getContents().trim());OPERATION_ID = Integer.parseInt(rs[i].getCell(1, j).getContents().trim());USER_ID = Integer.parseInt(rs[i].getCell(2, j).getContents().trim());USER_CN = rs[i].getCell(3, j).getContents().trim();USER_NAME = rs[i].getCell(4, j).getContents().trim();STATUS = Integer.parseInt(rs[i].getCell(5, j).getContents().trim());System.out.println("VALUE:"+ID+","+OPERATION_ID+","+USER_ID+","+USER_CN+","+USER_NAME+","+STATUS);SQL = "INSERT INTO TABLE " + table_name +"(ID,OPERATION_ID,USER_ID,USER_CN," + "USER_NAME,STATUS) VALUES "+ "("+ID+","+OPERATION_ID+","+USER_ID+"," +"\""+USER_CN+"\""+","+"\""+USER_NAME+"\""+","+STATUS+")";sb = sb.append(SQL + "\r\n");fw.write(sb.toString());}}} catch (final Exception e) {ID = 1;}fw.close();} catch (final IOException ex) {ex.printStackTrace();}}}Excel 表A、B、C、D、E、F列名分别是ID、OPERATION_ID \USER_ID、USER_CN、USER_NAME、STATUS。

EXCEL与ORACLE间的数据互传法

EXCEL与ORACLE间的数据互传法

众所周知,MicrosoftExcel能很直观而方便地进行数据输入,统计,生成图表,但它的数据管理能力有限,对大量的数据查询能力不足,如果利用它数据计算方面的优点和大型数据库ORACLE的数据查询优点,可以设计出功能强大的数据处理系统。

假设与Excel数据文件相对应的职工情况表EMP已在ORAC LE系统中创建,此表中各字段按照顺序分别是职工代号( Emp—No),职工姓名(Ename),工资(Salary),雇用时间(Hiredate)。

本文将通过此例来介绍Excel与ORACL E数据交换的具体步骤。

1、将Excel中的数据装入ORACLE数据库通过ORACLE数据库系统的高级应用工具SQL*Loader 可以将原来的Excel中存储的数据直接装入ORACLE数据库的表中。

首先,在MicrosoftExcel中完成表格数据输入后,选择“保存文件”命令,在出现对话框的“文件类型”栏中选取“格式化文本文件(空格分隔)”以形成一个标准格式化文本文件(*.PRN)或是选取“CSV(逗号分隔)”形成一个逗号定界文件(*.CSV)。

这两者的区别是:标准格式的文本文件中每个记录等长,数据间按原库文件字段长度紧凑排列,字符型字段数据左对齐,数据型字段数据右对齐,不足部分用空格补足。

逗号定界文件特点是各记录可不等长,字段按其定义顺序依次排列,字段间用逗号分隔,字符型字段和数据型字段的左右端空格被消去。

因为这两种格式文件有不同的数据装入方法,假如我们将职工情况EMP表存为EMP.CSV,数据变成如下形式:120,JOE,1192.64,93/04/11121,KERT,309.60,87/01/1423,PETER,1500.25,84/03/12124,SMITH,678.00,91/01/0715,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主屏幕对话框中,分别输入用户登录名,密码,数据库名称和控制文件名,确认后进行数据装载。

把Excel中的数据导入Oracle数据库中精修订

把Excel中的数据导入Oracle数据库中精修订

把E x c e l中的数据导入O r a c l e数据库中SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#教你怎么样把Excel文件中的数据导入到Oracle数据库中第一种:最简单的方法。

在EXCEL中全选数据,然后COPY。

接着打开PL/SQLDEVELOPER,打开SQL窗口,输入select*frommytableforupdate;然后执行,就可以看到查出目的表mytable数据,如果是空表,当然是没数据了。

然后点击下面列表上方的锁(编辑数据),不管有没有数据,我们选择最后一个空行的行头,让整行变成黑色则表示整行已全选中。

注意该行左边是有个黑色实心三角箭头的。

然后粘贴,再commit就OK咯。

说明:而且这个方法还有个好处就是对EXCEL中的日期型、数值型字段的处理也很正常,数据类型不会丢失。

图:选中了行然后粘贴数据第二种:简单的方法。

先将Excel文件另存为一个.csv文件,然后编写一个insert.ctl文件,ctl文件写法如下:loaddata --1、控制文件标识infile'test.csv' --2、要输入的数据文件名为test.csv appendintotabletable_name--3、向表table_name中追加记录fieldsterminatedby',' --4、字段终止于',',是一个逗号(field1,field2,field3,...fieldn)-----定义列对应顺序field(x)要与Oracle表中的字段名保持一致(大写)最后在DOS命令下执行以下命令:sqlldruser/passwordcontrol=insert.ctl图:表示导入了12条记录第三种:比较简单的方法。

如果数据不是很多,可以使用如下方法:假设表名为test_excel,有4列数据,则设置Excel的E1单元格的值为="insertintotest_excelvalues(‘”&A1&“’,‘”&B1&“’,‘”&C1&“’,‘”&D1&“’);”向下拖动该公式,则生成一列sql,把其copy到sql/plus中执行即可(如果数据中有单引号,需要先替换成两个),临时导数据用这种方法还是比较方便的。

Oracle使用SqlLoad导入Excel大数据操作方法

Oracle使用SqlLoad导入Excel大数据操作方法

Oracle使用SqlLoad导入Excel大数据操作方法第一步:按excel格式整理需要导入的源数据第二步:将excel表格另存为csv(逗号分割)格式。

第三步:用文本方式打开impfile.ctrl文件,修改里面的infile行为文件实际存放路径和名称,比如:infile 'c:\cust.csv'第四步:用文本方式打开impfile.ctrl文件,修改append into table 行后面加上要导入的表明,例如:append into table if_imp_card第五步:用文本方式打开impfile.ctrl文件,修改TRAILING NULLCOLS下面文本内容为表对应的字段和分割符(terminated by ','),最后一个字段用(terminated by whitespace),对于日期类型要在字段后定义上日期类型格式(Date(10) "YYYY-MM-DD"),例如:TRAILING NULLCOLS(oldtype terminated by ',',cardno terminated by ',',cardpwd terminated by ',',trackinfo terminated by ',',oldmkt terminated by ',',name terminated by ',',sex terminated by ',',cardflag terminated by ',',birthday Date(10) "YYYY-MM-DD" terminated by ',',idtype terminated by ',',idno terminated by ',',mindate Date(10) "YYYY-MM-DD" terminated by ',',maxdate Date(10) "YYYY-MM-DD" terminated by ',',ljjf terminated by ',',jfye terminated by ',',xfje terminated by ',',lczhye terminated by ',',flqye terminated by ',',addr terminated by ',',zipcode terminated by ',',tel terminated by ',',mobile terminated by whitespace)第六步:将impfile.ctl文件和要导入的csv数据文件拷贝到同一目录下,建议存放在盘符根目录;第七步:在CMD命令中输入oracle安装的bin路径,执行该命令执行如下指令:sqlldr userid=用户名/用户密码@数据库实例control=c:\impfile.ctl log=c:\impfile.log例如:D:\app\product\11.2.0\dbhome_1\BIN>sqlldr userid=dbusrif/future@crmls control=c:\impfile.ctl log=c:\impfile.log。

使用sqlldr命令导入资料到Oracle数据库表中的示例说明

使用sqlldr命令导入资料到Oracle数据库表中的示例说明

使⽤sqlldr命令导⼊资料到Oracle数据库表中的⽰例说明CSV: Comma-Separated Values(逗号分隔值)的缩写,是以逗号分隔字段的多⾏⽂本⽂件sqlldr 是sql*loader的缩写,此⼯具在安装完整版的Oracle客户端后就有使⽤sqllldr可以将有规律的⽂本数据(如csv)导⼊数据表导⼊⽰例:将csv⽂本⽂件andon.txt导⼊到manpowertest中的testandon表中testandon表结构create table TESTANDON(build_no VARCHAR2(5),device_no VARCHAR2(5),btn_no VARCHAR2(5),flag VARCHAR2(1),data_time DATE --此为时间格式,导⼊时要作特殊处理)1、⽤记事本或其它⽂本软件创建⼀个.ctl导⼊控件⽂件,此处以C:\andon.ctl为例,内容为OPTIONS(SKIP=1) --跳过1⾏,即跳过csv⽂件的第⼀⾏表头不导⼊load datainfile 'C:\andon.txt' --要导⼊的csv⽂本的路径append into table manpowertest.testandon --要导⼊到数据库中哪个表fields terminated by "," --要导⼊的⽂本是以什么符号分隔字段的,这⾥是逗号(build_no, --要导⼊到表中的哪些字段device_no,btn_no,flag,data_time timestamp "yyyy-mm-dd hh24:mi:ss" --由于数据表中此字段类型为date类型,并⾮⽂字类型,使⽤timestamp "yyyy-mm-dd hh24:mi:ss"进⾏格式转换)2、在cmd中执⾏sqlldr命令如下sqlldr userid=manpowertest/manpowertest@ora32 control=c:\andon.ctl log=c:\andon.log附檔1:andon.txt栋号,设备号,按钮代码,开关状态,触发时间A2-1,4,2,1,2014-10-29 15:14:13A2-1,30,2,0,2014-10-29 14:51:36A2-2,10,2,0,2014-10-29 14:18:53A2-2,11,2,0,2014-10-29 15:11:07A2-2,12,2,0,2014-10-29 14:40:13附檔2:andon.ctLOPTIONS(SKIP=1)load datainfile 'C:\andon.txt'append into table manpowertest.testandon fields terminated by ","(build_no,device_no,btn_no,flag,data_time timestamp "yyyy-mm-dd hh24:mi:ss")。

sqlloader导出数据和导入数据

sqlloader导出数据和导入数据

sqlloader导出数据和导⼊数据分类: Oracle忙了⼀天终于把sqlloader导出数据和导⼊数据弄清楚了,累死俺了。

这个总结主要分为三个⼤部分,第⼀部分(实例,主要分两步),第⼆部分(参数⼩总结),第三部分(完全参数总结)第⼀部分第⼀步 :这是我的导出数据的脚本call.sqlconn scott/tigerset echo offset term offset line 1000 pages 0set feedback offset heading offset trimspool onspool /temp/test/ldr_test.csvselect a.empno||',"'||a.ename||'",'||to_char(a.hiredate,'yyyy-mm-dd hh24:mi:ss')||','||a.sal from test a;spool offset trimspool offset heading onset feedback onset term onset echo onexit注释:call.sql脚本执⾏⽅法 (1)sqlplus /nolog 先进⼊sqlplus命令模式(2)start call.sql 在sqlplus命令模式下执⾏第⼆步 :导⼊数据的脚本add_test.ctlLOAD DATAINFILE ldr_test.csvTRUNCATE INTO TABLE testFIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"'(EMPNO,ENAME,HIREDATE date 'yyyy-mm-dd hh24:mi:ss',SAL)注释: 在第⼀步导出数据后,执⾏add_test.sql脚本命令为: sqlplus scott/tiger control=add_test.ctl⾄此⽤sqlplus导⼊/出数据完成了,如果有些参数不明⽩,请看⼀下第⼆三部分。

5种从Excel数据导入Oracle方法

最近同事遇到了每天手工导入Excel数据到Oracle的问题,他目前的操作是使用PL/SQL Developer中的复制粘贴方法,这样每天都需要进行手工的操作,很明显长期下来的工作量是比较大的,于是找了几种可供使用的导入方法:一、直接使用SQL*Loader导入SQL*Loader是Oracle自带的数据加载工具,其数据导入比较专业,有各种参数及选项可供选择,经常是作为数据仓库中大型数据的导入方法选择。

优点:1、可将导入命令写入BAT文件直接批量处理2、导入处理比较专业,提供各种参数选择3、无需操作Oracle所在服务器缺点:1、Excel文件需要另存为txt或csv格式(似乎没有自动完成的方法)总得来说这种方法是最值得采用的,可以自动建立操作系统的批处理文件执行SQLLDR命令,将数据导入原始接收表,并在数据库中设置触发器进行精细操作。

二、使用外部表直接更新Excel数据Oracle的外部表其实也可以满足将外部数据读入数据库的功能,但是其可操作性相比SQL*Loader还是要小很多优点:1、无需执行导入操作,更新外部文本文件后可直接查询数据2、仅在查询时操作一次数据,对系统资源占用较小缺点:1、需要建立directory ,一是要有权限,二是文件必须放到Oracle服务器上(似乎不能远程)2、需要上传文件,而且无法进行多表导入等复杂的操作3、同样需要将Excel文件存储为txt或csv格式这种方法对于权限要求高,操作性弱,仅针对于简单的数据导入时使用。

三、PL/SQL Developer粘贴法这种方法就比较简单易用了,每次复制粘贴就行,只限于偶尔的导入使用,要是每天导入就累死人了。

优点:1、操作便捷,简单直接2、仅需要最简单的update/insert/delete table权限缺点:1、只能对一张表进行操作,多表操作会十分复杂2、需要手动操作的工作量较大3、所有数据需在Excel中处理完毕,导入时无法进行任何简单操作具体操作方法:1、在PL/SQL Developer中选择需要操作的表,右键-Edit Data;<也可以在查询窗口中输入select * from table_name for update;然后点击打开那个锁>2、可以直接在数据窗口中修改或粘贴新的数据(注意格式);3、点击那个钩(Post Change);4、提交数据;四、使用Access中转这种方法只是在网上看到了一下,对于Access没有什么研究,但是觉得应该会有以下缺点1、导入无法自动刷新,甚至连简单的点击刷新也没有2、需要建立ODBC、导入、导出等多步操作,工作量极大3、数据导入到Oracle中时,基本上没有可操作性,只能最简单的操作这种方法唯一的优点大概就是可以直接将Excel的数据导入到Access,但是操作步骤也比较多转一下网上说的方法:1、在本地创建一个Access数据库,将Excel数据先导入到Access。

ORACLE SQL LOADER用法(excel导入oracle)

心之所向,所向披靡SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。

SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。

首先,我们认识一下SQL*LOADER。

在windows下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。

如执行:c:\sqlldrSQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 11:06:42 2002(c) Copyright 1999 Oracle Corporation. All rights reserved.用法: SQLLOAD 关键字 = 值 [,keyword=value,...]有效的关键字:userid -- ORACLE username/passwordcontrol -- Control file namelog -- Log file namebad -- Bad file namedata -- Data file namediscard -- Discard file namediscardmax -- Number of discards to allow (全部默认)skip -- Number of logical records to skip (默认0)load -- Number of logical records to load (全部默认) errors -- Number of errors to allow (默认50) rows -- Number of rows in conventional path bind array or between direct path data saves(默认: 常规路径 64, 所有直接路径)bindsize -- Size of conventional path bind array in bytes(默认65536)silent -- Suppress messages during run (header,feedback,errors,discards,partitions)direct -- use direct path (默认FALSE)parfile -- parameter file: name of file that contains parameter specification sparallel -- do parallel load (默认FALSE)file -- File to allocate extents fromskip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默认FALSE)skip_index_maintenance -- do not maintain indexes, mark affected indexes as unus able(默认FALSE)commit_discontinued -- commit loaded rows when load is discontinued(默认FALSE)readsize -- Size of Read buffer (默认1048576) PLEASE NOTE: 命令行参数可以由位置或关键字指定。

利用sqlldr将EXCEL文件导入到ORACLE数据库

利用sqlldr将EXCEL文件导入到ORACLE数据库利用sqlldr将EXCEL文件导入到ORACLE数据库" 系统环境:1、操作系统:Windows 2000 Server,机器内存128M2、数据库:Oracle 8i R2 (8.1.6) for NT 企业版3、安装路径:C:\ORACLE" 实现步骤:"" 1、打开MicroSoft Excel 2000"" 2、文件(F)→新建(N)→工作簿→"" 3、输入以下数据,存盘为test.xls,如图:" 4、文件(F)→另存为(A)→"" 保存类型为:制表符分隔,起名为text.txt,保存到C:\ "" 5、连入SQL*Plus" 以system/manager用户登录," SQL>; conn system/manager"" 创建表结构" SQL>; create table test" (" id number,--序号" username varchar2(10),--用户名" password varchar2(10),--密码" sj varchar2(20)--建立日期" );"" 6、创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑:" 控制文件:input.ctl,内容如下:"" load data--1、控制文件标识" infile 'test.txt'--2、要输入的数据文件名为test.txt" append into table test--3、向表test中追加记录" fields terminated by X'09'--4、字段终止于X'09',是一个制表符(TAB)" (id,username,password,sj)-----定义列对应顺序"" a、insert,为缺省方式,在数据装载开始时要求表为空" b、append,在表中追加新记录" c、replace,删除旧记录,替换成新装载的记录" d、truncate,同上测试数据,input.ctl文件的内容:load datainfile 'test.txt'append into table testfields terminated by X'09'(id,name)或load datainfile 'test.txt'append into table testfields terminated by ","(id,name)注:test.txt可以为informix导出的test.dat文件." 7、在DOS窗口下使用SQL*Loader命令实现数据的输入"" C:\>;sqlldr userid=system/manager control=input.ctl" 测试数据:" C:\>;sqlldr userid=vipdl/vipdl123@dgvip control=input.ctl 默认日志文件名为:input.log" 默认坏记录文件为:input.bad"" 8、连接到SQL*Plus中,查看是否成功输入load datainfile 'c:\data_yzd\I0110769.01.BILL'append into table t_icp(SID POSITION(01:11),GSD POSITION(12:14),XZQ POSITION(15:16),YWDM POSITION(17:21),BJFCS POSITION(22:27),JFCS POSITION(28:33),YZ_JE POSITION(34:43),XX_JE POSITION(44:53))sqlldr userid=vipdl/vipdl123@odgvip control='c:\data_yzd\bill.ctl'。

excel导入ORACLE的四个方法

excel导入ORACLE的四个方法文章分类:数据库EXCEL里导入ORACLE有四种方法,结合网上的写写:1 使用sql *loaderSQL*LOADER是oracle的数据加载工具,在NT下sql*loader的命令为SQLLDR,在UNIX下一般为SQLLDR/SQLLOAD。

通常用来将操作系统文件迁移到oracle数据库中。

它是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(direct,parallel)。

但这种方法要求存储数据的oracle表是已经存在的。

使用这种方法导入excel内容到oracle时,首先需要将excel文件另存为文本格式,文件类型选文本类型或者csv类型即将e:\test.xls另存为e:\test.csv。

如果oracle没有对应存储数据的表结构,则需要创建表test(id,name,telphone)。

用记事本创建sql*loader控制文件test.ctl(ctl后缀是企图证明这是一个控制文件,但实际上这个文件后缀不重要,用户可以自由选择,但文件格式一定要是文本格式),内容如下:Load dataInfile ‘e:\test.csv’ --数据源文件名称Append|insert|replace --append在表后追加,insert插入空表,replace替代原有内容Into table test --要导入的数据库表名称[when id = id_memo] --过滤条件Fields terminated by X’09’ --字段分隔符(id,name,telphone) --字段名称列表最后在命令窗口输入sqlldr命令行执行导入操作Sqlldr userid =system/manager control=’e:\test.ctl’Sqlldr的函数关键字说明:Userid --oracle用户名 userid = username/passwordControl --控制文件名称control = ‘e:\insert.ctl’Log –-日志文件名称log = ‘e:\insert.log’Bad --损坏文件名称Data --data file nameDiscard --discard file nameDiscardmax --number of discards to allow(默认全部)Skip --导入时跳过的记录行数(默认0)Load --导入时导入的记录行数(默认全部)Errors --允许错误的记录行数(默认50)2 使用plsql developerPL/SQL Developer是一种专门用于开发、测试、调试和优化oracle PL/SQL存储程序单元,比如触发器,存储过程,函数和程序包等集成开发环境。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档