Excel数据通过plsql 导入到Oracle
- 格式:doc
- 大小:151.50 KB
- 文档页数:2
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。
PL/SQL中将excel表格中的数据导入数据表的方法
(1)Excel表中的数据可以不按照数据库中字段的顺序存放,如下图所示:
(2)将Excel文件另存为为(文本文件(制表符分隔)(*.txt))
注:在另存为之前要选中Excel表中要另存的数据,否则形成的txt文件导入不了PL/SQL 中
(3)将新生成.txt数据文件导入到Pl/SQL
进入Pl/SQL,选择菜单“工具”——“文本导入器”,进入文本导入器的页面后,点击“来自文本文件的数据”选项卡,然后点击打开按钮,选择目标.txt文件(注:在选择之前一定要将Excel文件关闭,否则txt文件无法导入)
(4)此时“文件数据”中会显示,查看显示是否有误
(5)若有误则要在“配置”中进行相应的设置
注:如果不将标题名勾选上,则会导致字段名也当做记录被导入到数据库中,影响正确录入。
说明:由于在Excel中,超过15位的数字后三位会显示为0,需要在输入的数值前输入英文单引号,这样数值就能正常显示了。
如:如果设一个身份证号的字段,而身份证号是18位的数字,在Excel中要这样输——“'111111111111111111”才能保证全部显示,所以在导入时字段前面也会多一个单引号,因此,此时该字段的相对位置就要设置为1.
(6)“结果预览”中可以看到:
(7)点击“到Oracle中的数据”选项卡
(8)点击下方“导入”按钮后,可看到数据成功导入数据库
直接在PL/SQL里面用SQL向oracle中添加数据
1、打开PL/SQL,点击“文件”——“新建”——“SQL窗口”,在窗口中输入“Insert”语句
2、点击,执行即可。
将excel数据导入oracle中的几种方法将Excel数据导入Oracle数据库有多种方法,下面介绍几种常用的方法,包括使用Oracle SQL Developer、使用PL/SQL、使用OracleData Integrator(ODI)和使用第三方工具。
1. 使用Oracle SQL Developer导入数据Oracle SQL Developer是Oracle官方提供的数据库开发和管理工具。
它提供了一种简单直观的方法将Excel数据导入到Oracle数据库中。
步骤如下:1) 打开Oracle SQL Developer并连接到目标数据库。
2)在导航栏中选择"表格"选项卡。
3)在"表格"选项卡中,右键单击要导入数据的表格,选择"导入数据"。
4) 在"导入数据"对话框中,选择"从文件"选项,并选择Excel文件。
5)配置导入选项,例如数据格式、目标表格和列映射等。
6)单击"导入"按钮,开始导入数据。
2.使用PL/SQL导入数据PL/SQL是Oracle的过程化编程语言,可以使用它编写脚本将Excel数据导入到Oracle数据库中。
步骤如下:1) 打开PL/SQL开发工具,例如Oracle SQL Developer或者Oracle PL/SQL Developer。
2)创建一个新的PL/SQL脚本。
3) 在脚本中使用INSERT语句将Excel中的数据逐行插入到目标表格中。
4)运行脚本以执行导入数据的操作。
3. 使用Oracle Data Integrator(ODI)导入数据Oracle Data Integrator(ODI)是一个数据集成工具,可用于将Excel数据导入到Oracle数据库中。
它提供了一种图形化的方法来定义和管理数据转换和导入操作。
步骤如下:1) 打开ODI Studio并连接到目标数据库。
把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中执行即可(如果数据中有单引号,需要先替换成两个),临时导数据用这种方法还是比较方便的。
OraclePLSQL读取(解析)Excel⽂档/thread-1921612-1-1.html!!!https:///p/plsql-utils/Introduction介绍Excel⽂档的数据如何读取到数据库⼀直是值得深究的问题。
⽬前相信⼤部分程序员都是直接⽤⼯具将Excel的数据读取到Oracle数据库的。
例如Toad,PL/SQL Developer的Excel数据导⼊功能。
也有⼀部分程序开发的是:先将Excel转换为⼀个逗号分隔符等的⽂本⽂件(CSV等),然后写代码通过特定的符号(TAB符号或者逗号等)将数据拆分并且识别。
其实上⾯的读取Excel的办法都不是最好⽤的办法。
举个例⼦,⽤Toad等⼯具来做,程序开发⼯程师来做是可以的,但是不可以将这个⼯作交给普通⽤户做(当⽤户想导⼊数据的时候)。
如果⽤⽂本来做,先要做⼀个转换,对于⽤户来说⽆疑是多做了⼀个动作,操作不⽅便。
综上所述,其实最⽅便的还是:如何在Oracle数据库⽤PL/SQL直接读取Excel的内容,这才是最好的做法。
在PL/SQL直接解析并读取Excel,有⼀个蛮不错的办法,就是⽤Java的POI组件。
确实是不错,但是要先导⼊POI的Java类,然后再在Oracle⾥⾯写⼀段Pkg的class类解析Excel。
是可⾏的。
我也研究过,发现有⼀些限制(可能是和POI的版本太低有关系)。
这⾥提出⼀个更加好的办法,就是⽤Oracle⾃带的utl_raw 包(⼆进制处理包)和dbms_xmldom包,将Excel⽂件对应的Blob⼤⽂本字段进⾏解析,最后再将解析出来的内容⽤管道表函数输出⼀个虚拟的表格。
这样⼦就是很直观了,直接将⼀个Excel⽂档解析为⼀个表格!可能⼤家⽐较关⼼解析的效率。
所以针对效率⽅⾯,经过测试,还是⾮常不错的。
下⾯有专门测试解析效率的主题。
另外⼀个⽐较关⼼的问题:Excel⾥⾯可以有很多公式列,那对于公式列读取出来的结果是什么?另外,⼀些特殊的格式栏位是否可以正确识别?经过测试,这些都可以得到正确的解析。
关于oracle导出excel和excel导入oracle的经验总结关于oracle导出excel和excel导入oracle的经验总结一、oracle导出excel方法一:最简单的方法---用工具plsql dev执行File =>new Report Window 。
在sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。
在右侧工具栏,可以选择按钮另存为html、copy as html、export results,其中export results按钮中就可以导出excel文件、csv文件、tsv文件、xml文件。
方法二:最专业的方法---用原始工具sqlplus原文参见:/archives/2005/04/eoasqlplusieaae.html我做了一点修改,如下所示:1.main.sql用以设置环境,调用具体功能脚本2.功能脚本-get_tables.sql为实现具体功能之脚本通过这样两个脚本可以避免spool中的冗余信息,参考:如何去除SQLPLUS中SPOOL的冗余信息示例如下:1.main.sql脚本:[oracle@jumper utl_file]$ more main.sqlset linesize 200set term off verify off feedback off pagesize 999set markup html on entmap ON spool on preformat off spool d:/tables.xls@d:/get_tables.sqlspool offexit2.get_tables.sql脚本:[oracle@jumper utl_file]$ more get_tables.sqlselectowner,table_name,tablespace_name,blocks,last_analyzed from all_tables order by 1,2;3.执行并获得输出:[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @d:/main.sqlSQL*Plus: Release 9.2.0.4.0 - Production on Mon Apr 25 10:30:11 2005Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.Connected to:Oracle9i Enterprise Edition Release 9.2.0.4.0 - ProductionWith the Partitioning optionJServer Release 9.2.0.4.0 - ProductionDisconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - ProductionWith the Partitioning optionJServer Release 9.2.0.4.0 - Production[oracle@jumper utl_file]$ ls -l tables.xls-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls[oracle@jumper utl_file]$此处输出为xls文件,通过下图我们可以看到输出效果:把main.sql脚本中的,spool tables.xls更改为spool tables.htm,我们可以获得htm格式输出,效果如下图:方法三:最悲剧的方法,之所以称为悲剧,是因为这个方法其实很简单,但是你可能没有注意。
如何将excel导入oracle数据库的教程在中录入好数据以后就需要导入到oracle数据库,或许有些朋友不知道该如何做。
下面是带来的关于如何将excel导入oracle数据库的教程,欢送阅读!导入oracle数据库步骤1:oracle数据库有一个student表,现有一个excel表:student.xlsx,需导入oracle数据库student 表中。
导入oracle数据库步骤2:student表的拥有者是system,system密码为test导入oracle数据库步骤3:翻开需导入的excel表格,单击office按钮,选择另存为--其他格式导入oracle数据库步骤4:选择保存路径(置于D:\),保存类型CSV(逗号分隔)(*.csv),设置文件名为student.csv,单击保存导入oracle数据库步骤5:新建input.ctl文件(置于D:\),内容为:load datainfile 'd:\student.csv'append into table student fields terminated by ','trailing nullcols(id,name,sex,age)说明:infile后面参数为欲导入的excel表(已转换成csv格式)路径及名称;append在表后追加;table后面跟oracle数据库中的表名称; terminated by ','表示字段分隔符;(id,name,sex,age)表示字段名称列表导入oracle数据库步骤6:同时按Windows徽标键和R键,翻开运行,输入cmd,翻开提示符,输入命令:sqlldr userid=system/test@servicenamecontrol=d:\input.ctl说明:system/test,为oracle数据库表student的所有者及其密码;@ servicename为网络效劳名;control是input.ctl文件名称及路径导入oracle数据库步骤7:进入oracle数据库,查询student 表,excel已导入。
PLSQL导入导出Oracle数据库方法在Oracle数据库中,我们可以使用PL/SQL来导入和导出数据。
下面是一些常用的方法:1. 使用SQL*Loader工具导入数据:SQL*Loader是Oracle提供的一个强大的数据导入工具。
通过创建一个控制文件和数据文件,可以将数据从外部文件导入到Oracle表中。
以下是一个简单的示例:```sqlLOADDATAINFILE 'data.txt'INTO TABLE empFIELDSTERMINATEDBY','```2. 使用Oracle Data Pump导入导出数据:Oracle Data Pump是Oracle 10g之后引入的一种高效的导入导出工具。
它提供了更快的数据加载和卸载速度,并且可以在导入导出过程中进行并行操作。
以下是一个简单的示例:```sql--导出数据EXPORT SCHEMA scott DIRECTORY=data_pump_dirDUMPFILE=scott.dmp--导入数据IMPORT SCHEMA scott DIRECTORY=data_pump_dirDUMPFILE=scott.dmp```3.使用PL/SQL脚本导入导出数据:我们可以使用PL/SQL脚本编写自定义的导入导出逻辑。
以下是一个简单的示例:```sql--导出数据DECLAREfile_handle UTL_FILE.FILE_TYPE;emp_rec emp%ROWTYPE;BEGINfile_handle := UTL_FILE.FOPEN('DATA_DIR', 'emp_data.txt', 'W');FOR emp_rec IN (SELECT * FROM emp) LOOPUTL_FILE.PUT_LINE(file_handle, emp_rec.empno , ',' ,emp_rec.ename , ',' , emp_rec.job);ENDLOOP;UTL_FILE.FCLOSE(file_handle);END;--导入数据DECLAREfile_handle UTL_FILE.FILE_TYPE;line_text VARCHAR2(200);BEGINfile_handle := UTL_FILE.FOPEN('DATA_DIR', 'emp_data.txt', 'R');LOOPUTL_FILE.GET_LINE(file_handle, line_text);--解析并插入数据ENDLOOP;UTL_FILE.FCLOSE(file_handle);END;```这是一些常用的PL/SQL导入导出Oracle数据库的方法。
使⽤Excel表格导⼊数据到Oracle表在⼯作中我们会遇到将通过数据⼿动录⼊到系统中的需求,如果数据量⽐较⼩,那么⼿动输⼊是可⾏的,倘若数据量很⼤,那么这些数据⼿动录⼊将会是⼀个很⼤的⼯作量,为了简化这个⼿动录⼊的操作流程,我们可以使⽤Excel表格先将数据按照相关格式保存,然后再通过Excel表格数据导⼊Oracle 表的表中,这样可以⼤⼤节约⼿动输⼊的时间。
但这样做也不是没有风险的,虽然我们⼿动输⼊很慢和繁杂,但是如果系统对输⼊数据有相关的事务记录处理的话,那么每⼀笔数据来源都是可以事务处理查询到的,如果使⽤Excel导⼊那么将对这些数据来源⽆法通过事务记录查询,所以对于输⼊的数据最好做好⼀些备注。
那么如何将Excel的数据导⼊的Oracle的表中呢? 1.查询对应Oracle表中有哪些数据列 2.在excel中按照oracle 表的数据列名建⽴表格并录⼊数据 3.将建⽴的excel表格另存为csv的⽂件,并将其保存,如D:\import.csv 4.使⽤txt⽂档创建input.txt输⼊以下语句内容,修改其txt后缀txt为ctl,然后将其保存如D盘下。
load datainfile 'd:\import.csv'append into table DRUG fields terminated by ','trailing nullcols(DRUG_NAME,DRUG_ORDER,DRUG_ABBREVIATION,DRUG_DEPARTMENT) 说明: 5.最后打开cmd,输⼊命令⾏sqlldr userid=⽤户名/⽤户密码@数据库名 control=D:\input.ctl ,将excel数据导⼊到数据库表 6.执⾏完成后,若出现执⾏错误,当前⽬录下会出现*.bad ⽂件,记录了插⼊不成功的数据,可进⾏⼿动处理 7.若添加数据出现乱码问题,使⽤notepad++等⽂本编辑器打开csv⽂件,检查⽂件的编码格式是否与Oracle数据的编码格式⼀致,如果不⼀致则会导致⽹页数据或数据库数据乱码发⽣。