如何把excel数据导入数据库
这里介绍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数据导入数据库的更多相关文章
- 使用python将excel数据导入数据库
使用python将excel数据导入数据库 因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接 ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- C#将Excel数据导入数据库(MySQL或Sql Server)
最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...
- Excel数据导入数据库
maven依赖 <!--excel相关依赖--> <dependency> <groupId>org.apache.poi</groupId> < ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- PHPExcel将Excel数据导入数据库
<?php //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据 ...
- 将Excel数据导入数据库
Excel如下,这页工作表名叫“线路” 数据库表如下 using System; using System.Collections.Generic; using System.Linq; using ...
- ASP.NET Excel数据导入数据库
<identity impersonate="true"/> 是指模拟IIS身份验证 導入錯誤時可刪除 protected void btnImport_Click(o ...
- 利用poi,jxl将Excel数据导入数据库
需求:‘需要将本地的Excel中的数据经过验证之后导入数据库,在导入数据库之前在页面上展示出来 思路:将Excel导入存到session里面 去判断有没有不合法数据 如果有阻止提交 工具类: imp ...
随机推荐
- 开源GIS简介.学习
开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在 GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaEE,而微软也正式发布了.NET2. ...
- (转)SpyGlass工具介绍
Spyglass工具有五大模块: lint, CDC(多时钟域检查), LP(低功耗),Constraint(约束),DFT(可测试性). 一,在RTL层面上预估芯片性能,从而引导设计人员开发出更加 ...
- iOS 拨打电话三种方法
小弟查了很多地方的关于iOS程序拨打电话,大都不全,今天我总结了三种方法,各有不同,拿来给大家分享,希望给大家有所帮助1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出 ...
- search--搜索引擎的使用笔记
重度使用 完全匹配搜索 “”把搜索词放在双引号中 搜索不包含该词 减号- 常用的通配符 星号* 站内搜索site docker site:http://blog.daocloud.io/ 扩大范围搜索 ...
- java多线程学习-ThreadLocal
为了凑字,把oracle文档里介绍ThreadLocal抄过来 public class ThreadLocal<T> extends Object This class provides ...
- SQL Server 存储过程自定义生成ID号
* FROM sys.tables WHERE name=N'EmployeeNo_Identity') DROP TABLE EmployeeNo_Identity GO CREATE TABLE ...
- 洛谷P1738 洛谷的文件夹
原题目:点我 题目是一个略水的题,我机制地用面向对象做了...所以代码量急剧加大,100行233 模拟即可,字符串处理麻烦点.如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹. 提示:高能,指针 ...
- sqlite中的replace、insert、update之前的区别
本文转自http://www.ithao123.cn/content-933827.html,在此感谢作者 android数据库操作,有两种方式,一种用android提供给我们的数据库操作函数inse ...
- 实战录 | Redis的主从服务器搭建
<实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全平台工程师田全磊,将带来Red ...
- 【Java学习笔记】<集合框架>TreeSet,Comparable,Comparator
public class Person implements Comparable{ private String name; private int age; public Person(){ su ...