快速将excel数据保存到Oracle数据库中【转】
我们在工作中,也许会碰到以下情况,客户或者同事发来需要调查的数据,并不是dmp文件,而是excel文件,此时通常是一张表,少量几条记录.最近我恰好碰到了这种情况,所以做了些调查,不敢藏私,拿出来跟大家分享下. 一般的做法,只能对着excel拼写sql语句.如果列数少还好说,表的列数一多的话,这方法既费时又费力.有什么办法可以快捷地导入数据呢?以下的方案可以供大家参考:
Sql*Loader
操作步骤如下:
- 录入excel测试表格,test.xls。
- 另存为.csv格式
- 创建sql*loader控制文件test.ctl,内容如下:
Load data
Infile 'c:\test.csv'
insert Into table test Fields terminated by ','(column1,column2,column3,column4,column5)
需要将数据文件拷贝到对应位置 - 到数据库中建立对应的测试表test
create table test (
column1 Varchar2(10),
column2 Varchar2(10),
column3 Varchar2(10),
column4 Varchar2(10),
column5 Varchar2(10)
) - 执行导入命令
Sqlldr userid = system/manager control='C:\test.ctl'导入成功!
附: Sqlldr的函数关键字说明:
Userid --oracle用户名 userid = username/password
Control --控制文件名称 control = 'e:\insert.ctl'
Log --日志文件名称 log = 'e:\insert.log'
Bad --损坏文件名称
Data --data file name
Discard --discard file name
Discardmax --number of discards to allow(默认全部)
Skip --导入时跳过的记录行数(默认0)
Load --导入时导入的记录行数(默认全部)
Errors --允许错误的记录行数(默认50)ctl文件内容说明:
Load data
Infile 'e:\test.csv' --数据源文件名称
Append|insert|replace --append在表后追加insert插入空表replace替代原有内容
Into table test --要导入的数据库表名称
[when id = id_memo] --过滤条件
Fields terminated by',' --字段分隔符
(id,name,telphone) --字段名称列表
说明:
这种方法的好处是sql*loader是oracle自带软件,无需安装额外的软件.缺点是操作比较麻烦点,而且如果表列数很多的话,输入字段名称列表会比较麻烦,适合导入大量数据.
PL Sql Developer 方法一
- 打开excel给需要拷贝的数据增加一个空的起始列 , 选中所要更新的数据,ctr+c
- 打开PL SQl Developer
- 输入select * from tab_name for update,按F8运行
- 打开锁,此时记录集处于可以编辑的状态,
- 点击选中整行, ctrl+v,commit,大功告成

说明:这种方法其实是利用PL/SQL developer 对于记录集可以进行整行和多行复制粘贴的特性,toad似乎没有这样快速的办法;
- 在excel表格的列新追加空列的原因是在PL/SQL Developer选中整行进行粘贴时,前面会有个列数的列,所以要新增加一列,否则会造成列的错位.
- 这种方法处理少量数据的时候最合适,快捷方便,但是: excel的列必须与表中的列完全匹配
PL Sql Developer 方法二
使用PL SQL Developerd的text importer,这种方法简单方便,推荐此种方法

方法很简单:
- 点击tools->text importer
- 在Data from txtfile 页面选择要导入的文件,在Data to Oracle 界面选择要导入的库和表即可
- 此时可以看到导入结果预览,还可以查看生成的sql语句,并且对于列可以智能匹配,妙用多多.当然点击Import 就OK了
说明:
这种方法简单可靠,适合导入大量的数据,我猜测这个工具其实是后台根据excel的列生成了相应的sql语句,取代人工拼写sql语句的过程,呵呵,就算生成的sql语句因为一些原因,不是很正确,也可以手工修改.这样既自动又可以手动加以控制,我比较推荐这种方法.
前提是要安装PL/Sql Developer,呵呵
综述:
我这篇文章主要介绍了两种工具用于将excel导入oracle,如果在客户的服务器上等环境受限的情况,没有PL/Sql Developer的话,使用Sql*Loader是个不错的选择;PL/SQL Developer的两种使用方法可以灵活使用,前者快速方便,后者可控性更好,而且无需字段匹配.
快速将excel数据保存到Oracle数据库中【转】的更多相关文章
- 将 node.js 的数据保存到 mongo 数据库中
Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2. ...
- node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中
步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...
- Python scrapy爬虫数据保存到MySQL数据库
除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...
- mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中
使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...
- 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:
我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code ? 1 int retrieve(int scanno,void* buf); 在 ...
- Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:
创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...
- 简单抓取安居客房产数据,并保存到Oracle数据库
思路和上一篇差不多,先获取网站html文件,使用BeautifulSoup进行解析,将对应属性取出,逐一处理,最后把整理出的记录保存到oracle中,持久化储存. '''Created on 2017 ...
- 使用scrapy爬取的数据保存到CSV文件中,不使用命令
pipelines.py文件中 import codecs import csv # 保存到CSV文件中 class CsvPipeline(object): def __init__(self): ...
- [转] JAVA读取excel数据(插入oracle数据库)
原文地址:http://blog.csdn.net/zczzsq/article/details/16803349 本实例做的是读取execl(只能读取.xls的execl,即只能读取03版的),如果 ...
随机推荐
- Windows Internals学习笔记(四)Trap Dispatching
参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...
- 利用[后台]->[类别管理]为文章前后台添加类别名称【转】
原网址:http://blog.csdn.net/yanhui_wei/article/details/7943176 1.给专题添加文章时,可以选择类别: 2.给文章模型.图片模型.下载模型的栏目下 ...
- MVC客户端验证配置
<appSettings> <add key="ClientValidationEnabled" value="true"/> < ...
- 缓存技术之——Yii2性能优化之:缓存依赖
Yii中的缓存依赖,简单来说就是将缓存和另外一个东西绑定在一起,如果另外一个东西发生变化,那么缓存也将发生变化.有点儿类似于JS中的触发事件(但是也不那么像),缓存的变动是依赖的东西所导致的. 依赖可 ...
- iOS8 获取通知设置状态
UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSet ...
- js学习笔记-编写高效、规范的js代码-Tom
编写高效.规范的js代码: 1.变量命名空间问题,尽量使用局部变量,防止命名冲突(污染作用域中的全局变量):全局空间命名的变量可以在对应的文档域任意位置中使用window调用. 2.尽量使用单var定 ...
- 报错Database returned an invalid value in QuerySet.datetimes(). Are time zone definitions for your database and pytz installed?解决
在django中的setting.py中: LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Asia/Shanghai' #'UTC' USE_I18N = True USE ...
- php提示:Call to undefined function curl_init
我要利用curl函数进行数据采集时发现提示Call to undefined function curl_init错误了,后来从官网了解到因为curl默认不是php开启的函数,我们需要手工打开哦,下面 ...
- Android自动接听&挂断电话(包含怎么应对4.1以上版本的权限检
一 前言 这两天要研究类似白名单黑名单以及手势自动接听的一些功能,所以呢,自然而然的涉及到怎么自动接听/挂断电话的功能了.对于自动接听这一块,android4.1版本及其以上的版本和之前的版本处理逻 ...
- html的空格和换行显示【摘自网络】
一.HTML 代码中的所有连续的空格或空行(换行)都会被显示为一个空格,不管是内容还是标签之间. 二.当我们想让它们在同一行连续显示时,就让所有的代码之间没有空格,也不要换行. 三.当我们想要显示连续 ...