oracle sqlldr数据导入方法,Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法

Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法

原文:http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html

在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:

1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中

2. 建立数据库间的 dblink,然后用 create table B as select * from A@dblink where ...,或 insert into B select * from A@dblink where ...

3. exp A 表,再 imp 到 B 表,exp 时可加查询条件

4. 程序实现 select from A ..,然后 insert into B ...,也要分批提交

5. 再就是本篇要说到的 Sql Loader(sqlldr) 来导入数据,效果比起逐条 insert 来很明显

第 1 种方法在记录多时是个噩梦,需三五百条的分批提交,否则客户端会死掉,而且导入过程很慢。如果要不产生 REDO 来提高 insert into 的性能,就要下面那样做:

view source

print?

1.alter table B nologging;

2.insert /* +APPEND */ into B(c1,c2) values(x,xx);

3.insert /* +APPEND */ into B select * from A@dblink where .....;

好啦,前面简述了 Oracle 中数据导入导出的各种方法,我想一定还有更高明的。下面重点讲讲 Oracle  的 Sql Loader (sqlldr) 的用法。

在命令行下执行 Oracle  的 sqlldr 命令,可以看到它的详细参数说明,要着重关注以下几个参数:

userid -- Oracle 的 username/password[@servicename]

control -- 控制文件,可能包含表的数据

-------------------------------------------------------------------------------------------------------

log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log

bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad

data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作

errors -- 允许的错误记录数,可以用他来控制一条记录都不能错

rows -- 多少条记录提交一次,默认为 64

skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描述

还有更多的 sqlldr 的参数说明请参考:sql loader的用法。

用例子来演示 sqlldr 的使用,有两种使用方法:

1. 只使用一个控制文件,在这个控制文件中包含数据

2. 使用一个控制文件(作为模板) 和一个数据文件

一般为了利于模板和数据的分离,以及程序的不同分工会使用第二种方式,所以先来看这种用法。数据文件可以是 CSV 文件

相关文档:

本文转载于:http://www.javaeye.com/topic/185385

学习数据库查询的时候对多表连接查询的有些概念还比较模糊。而连接查询是在数据库查询操作的时候肯定要用到的。对于此概念

我用通俗一些的语言和例子来进行讲解。这个例子是我讲课的时候经常采用的例子。

首先我们做两张表:员工信息表和部门信息表,在此,表� ......

直接在SQL查询分析器中读取EXCEL文件需要使用到OPENDATASOURCE。

但是使用它之前需要进行配置一下。记得如下配置是必须的:

1、执行这两个存储过程:

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'Ad Hoc Distributed Queries',1

reconfigure

它的作用:

第一个是:是否支持高级选 ......

1.一道SQL语句面试题,关于group by

表内容:

2005-05-09 胜

2005-05-09 胜

2005-05-09 负

2005-05-09 负

2005-05-10 胜

2005-05-10 负

2005-05-10 负

如果要生成下列结果, 该如何写sql语句?

胜 负

2005-05-09 2 2

2005-05-10 1 2

------------------------------- ......

sql导出到Excel

从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:

/*===================================================================*/

--如果接受数据导入的表已经存在

insert into 表 select * from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1 ......

首先,我们看看exists和in的效率问题,这里我只说明一种测试语句

set statistics io on

sqlstatement

set statistics io off、

或者

set statistics time on

sqlstatement

set statistics time off

从studio里面的消息可以看出问题,我引用网上的一些准则http://www.cnblogs.com/diction/arch ......

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值