这里介绍2种把excel数据导入oracle数据库的方法。

1. 在excel中生成sql语句。

1)在数据列的右侧,第一行的任何位置输入="insert into table(xx,yyy..) values('"&A2&"', '"&B2&"'….);"

注意:

  • 整个sql语句用双引号套着。
  • values值中使用 "&A2&"  来引用A列的第二行数据,再外面的单引号是因为values中的值(varchar型)需要单引号。

2)写完一行后往下拖,自动生成其他行的sql。

3)把这些sql copy到pl/sql dev工具中执行。

这种方法适合数据量不太大,且只含有varchar(或者说转入数据库中都为varchar类型字段)这种简单的数据类型的数据。对于含有日期类型的要注意,如果excel格式中有日期类型的,使用这种方法引用出来的值是个浮点数。需要首先把日期格式转换成文本格式。再写sql语句,它才能引用正确的日期格式的值。insert into user_test(seq, msisdn,user_name,dt,comment1,comment2) values('1','13597093898','张三42',to_date('2013/2/8 20:00:01','yyyy/mm/dd HH24:mi:ss'),'yyyy','yyyyy');

但存在以下情况不建议用这种方法了。

1. 对于数据量很大,几十万,上百万的数据。

2. 如果数据库表存在由序列生成的列。

3. 存在日期格式列的excel。——我没有找到很方便的直接把日期格式转为文本格式的方法(如直接转换成文本,它会显示成浮点),因此存在日期格式的excel列不建议采用这种方法。

当然第二点,还是可以通过其他方法解决的,就是写触发器。

在写insert语句插入的列不包含序列的列,写触发器,当表进行insert之前生成序列号插入。

假设数据库表如下

create table user_test

(

   seq number(10) primary key,

   msisdn varchar2(11) not null,

   user_name varchar2(50) not null,

   dt     date,

   comment1 varchar2(50),

   comment2 varchar2(50)

);

create sequence user_test_seq

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

insert变成这样写:

insert into user_test(msisdn,user_name,dt,comment1,comment2) values('','张三42',to_date('2013/2/8 20:00:01','yyyy/mm/dd HH24:mi:ss'),'yyyy','yyyyy');

触发器:

CREATE OR REPLACE TRIGGER my_trigger

  BEFORE INSERT

  ON user_test  FOR EACH ROW

WHEN (new.seq is null)

BEGIN

  SELECT user_test_seq.nextval INTO :new.seq  FROM DUAL;

END my_trigger;

其中:new.seq是指新列中的seq字段。

为更好的解决这些问题, 下面介绍第二种方法。

2. 写loader

1) 把excel中的数据另存为.csv文件,字段逗号分隔。假设保存为gov.csv

2 )写ctl文件:

gov.ctl

LOAD DATA

INFILE 'gov.csv'

APPEND

INTO TABLE  user_test

FIELDS TERMINATED BY ','

trailing nullcols

//下面列先后顺序同文件中数据字段的顺序。

(

seq "user_test_seq.nextval",

MSISDN,

user_name,

DT date "yyyy/mm/dd HH24:mi",

comment1 ,

comment2

)

3) 写par文件, 假设名为test.par,其内容为:

userid=用户/密码

control=./gov.ctl

log=./t.log

bad=./t.bad

skip=1            //跳过第一行标题

rows=10000   //每n行commit一次

4)sqlldr parfile=test.par

在我的服务器上,导入百多万的数据应该是一分钟之内的事。

如何把excel数据导入数据库的更多相关文章

  1. 使用python将excel数据导入数据库

    使用python将excel数据导入数据库 因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接 ...

  2. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  3. C#将Excel数据导入数据库(MySQL或Sql Server)

    最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...

  4. Excel数据导入数据库

    maven依赖 <!--excel相关依赖--> <dependency> <groupId>org.apache.poi</groupId> < ...

  5. 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  6. PHPExcel将Excel数据导入数据库

    <?php //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据 ...

  7. 将Excel数据导入数据库

    Excel如下,这页工作表名叫“线路” 数据库表如下 using System; using System.Collections.Generic; using System.Linq; using ...

  8. ASP.NET Excel数据导入数据库

    <identity impersonate="true"/> 是指模拟IIS身份验证 導入錯誤時可刪除 protected void btnImport_Click(o ...

  9. 利用poi,jxl将Excel数据导入数据库

    需求:‘需要将本地的Excel中的数据经过验证之后导入数据库,在导入数据库之前在页面上展示出来 思路:将Excel导入存到session里面 去判断有没有不合法数据  如果有阻止提交 工具类: imp ...

随机推荐

  1. loadrunner工具使用之脚本创建

    loadrunner工具使用之脚本创建 一.创建脚本 1.打开loadrunner,选择第一个控件VuGen(创建/编辑脚本),点击

  2. eclipse 配置黑色主题

    虽然以前也使用eclipse的黑色主题,但是配置起来稍微麻烦一点. 这里先声明,下面的方式适合最新版本的Eclipse Luna,旧的版本可以下载我提供的这个插件,并将其放在eclipse目录下的pl ...

  3. HashTable、HashSet和Dictionary的区别

    今天又去面试了,结果依然很悲催,平时太过于关注表面上的东西,有些实质却不太清楚,遇到HashTable和Dictionary相关的知识,记录下来,希望对后来人有所帮助,以及对自己以后复习可以参考. 1 ...

  4. AngularJS学习--- AngularJS中模板链接和图像 ng-src step6

    接上一篇文章,本文将主要介绍angularjs中的模板链接,和图像显示? 首先,切换分支,启动项目: git checkout step- npm start 1.效果 相较于前一篇文章,明显感觉多了 ...

  5. Java学习笔记15--引用传递

    范例一 class Demo{ public int temp = 30; } public class T { public static void main(String[] args) { // ...

  6. Google搜索质量评估员指南

    Google: 此文档是我们(谷歌)的一份搜索质量评估员指南,可作为搜索质量评估员的培训材料.其中主要介绍了一类名为“网址评分”的评分任务,此类任务要求评估员查看搜索查询与可能返回的相应结果.他们需要 ...

  7. Uber从Postgres切换到MySQL

    Uber工程师在官方博客上描述了他们为什么要从 Postgres 切换到 MySQL 数据库.Uber的早期架构是由 Python编写的后端应用构成,使用了 Postgres 数据库.但此后,Uber ...

  8. 『BASH』——文件权限批量恢复脚本——「Permission Revovery」

    一.恢复指定程序包所有文件的权限: #!/bin/bash #Assume that you have mounted a correct orignal-system on /mnt read -p ...

  9. 浏览器js console对象

    js中调用console写日志 console.log("some log"); console.warn("some warning"); console.e ...

  10. session的使用方法

    概念:session把客户资料存在服务器中,给浏览器一个加密凭证,每次登录生成的凭证都不相同,浏览器用cookie保存凭证.下次访问时服务器收到凭证后,打开文件读取session信息.session_ ...