oracle的sql loader数据加载工具

SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据

仓库选择使用的加载方法。

在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。

如执行:d:/oracle>sqlldr

SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 11:06:42 2002

(c) Copyright 1999 Oracle Corporation.   All rights reserved.

用法: SQLLOAD 关键字 = 值 [,keyword=value,...]

有效的关键字:

    userid -- ORACLE username/password

   control -- Control file name

       log -- Log file name

       bad -- Bad file name

      data -- Data file name

   discard -- Discard file name

discardmax -- Number of discards to allow         (全部默认)

      skip -- Number of logical records to skip   (默认0)

      load -- Number of logical records to load   (全部默认)

    errors -- Number of errors to allow           (默认50)

      rows -- Number of rows in conventional path bind array or between direct p

ath data saves

(默认: 常规路径 64, 所有直接路径)

  bindsize -- Size of conventional path bind array in bytes(默认65536)

    silent -- Suppress messages during run (header,feedback,errors,discards,part

itions)

    direct -- use direct path                     (默认FALSE)

   parfile -- parameter file: name of file that contains parameter specification

s

  parallel -- do parallel load                    (默认FALSE)

      file -- File to allocate extents from

skip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默

认FALSE)

skip_index_maintenance -- do not maintain indexes, mark affected indexes as unus

able(默认FALSE)

commit_discontinued -- commit loaded rows when load is discontinued(默认FALSE)

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

  readsize -- Size of Read buffer                 (默认1048576)

PLEASE NOTE: 命令行参数可以由位置或关键字指定

。前者的例子是 'sqlload

scott/tiger foo';后者的例子是 'sqlload control=foo

userid=scott/tiger'.位置指定参数的时间必须早于

但不可迟于由关键字指定的参数。例如,

'SQLLOAD SCott/tiger control=foo logfile=log', 但

'不允许 sqlload scott/tiger control=foo log',即使允许

参数 'log' 的位置正确。

控制文件介绍

LOAD DATA

INFILE 't.dat' // 要导入的文件

// INFILE 'tt.date' // 导入多个文件

// INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容, *和't.dat'不能同时存在

INTO TABLE table_name // 指定装入的表

BADFILE 'c:bad.txt' // 指定坏文件地址

************* 以下是4种装入表的方式

APPEND // 原先的表有数据 就加在后面

// INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值

// REPLACE // 原先的表有数据 原先的数据会全部删除

// TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据

************* 指定的TERMINATED可以在表的开头 也可在表的内部字段部分

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

// 装载这种数据: 10,lg,"""lg""","lg,lg"

// 在表中结果: 10 lg "lg" lg,lg

// TERMINATED BY X '09' // 以十六进制格式 '09' 表示的

// TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg

TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空

************* 下面是表的字段

(

col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载

// 如: lg,lg,not 结果 lg lg

)

// 当没声明FIELDS TERMINATED BY ',' 时

// (

// col_1 [interger external] TERMINATED BY ',' ,

// col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,

// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'

// )

// 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据

// (

// col_1 position(1:2),

// col_2 position(3:10),

// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置

// col_4 position(1:16),

// col_5 position(3:10) char(8) // 指定字段的类型

// )

看晕了吧?呵呵,我一开始也看得晕晕的,那就从我的实例开始吧!

这里,我的操作系统是xp,数据库主机是unix,数据库是oracle 10g。现要将我的机器里的文本文件datafile.txt导入到远程数据库中,

现在文件里的记录数达几千万。

datafile.txt文本内容:

js1a,192.168.2.254:80:,RUNNING

other,192.168.2.254:80:test.com,STOPPED

third,192.168.2.254:81:thirdabc.com,RUNNING

……

从中,我们看出有3列,分别以逗号分隔,为变长字符串。

首先,我们现在数据库建好表

create table mydata

(

mac_name varchar2(10),

mac_ip varchar2(50),

status varchar2(10)

)

时间: 2024-11-08 18:13:31

oracle的sql loader数据加载工具的相关文章

Oracle 高速批量数据加载工具sql*loader使用说明_oracle

SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工具.这是一个非常有用的工具,可用于多种平面文件格式向Oralce数据库中加载数据.SQLLDR可以在极短的时间内加载数量庞大的数据.它有两种操作模式. 传统路径:(conventional path):SQLLDR会利用SQL插入为我们加载数据. 直接路径(direct path):采用这种模式,SQLLDR不使用SQL:而是直接格式化数据库块. 利用直接路径加载,你能从一个平面文件读数据,并将其直接写至格式化的数据库块,而绕

巧用parallel极速提升数据加载速度

并行在平时工作中可能不是很注意,因为有时候即使设定了parallel 相关的hint,感觉性能也好不到哪去.这是我以前的感觉. 今天通过一个案例来分享一下通过parallel来使数据加载的速度达到极速提升. 现有一个很让人头疼的表,里面还有clob字段,通过exp/imp来导出导入数据,导出慢还可以接受,导入的速度大概在一秒钟1000条的速度,对于千万,上亿的数据来说,简直就是噩梦.对于数据泵,也测试了各种可能的改进方法.但是效果都不让人满意,首先就是对于undo的消耗极大,还有impdp中pa

提高数据加载速度的常用方法

数据加载是数据库应用开发和测试中经常遇到的需求场景.如果要加载的数据量很大,加载的性能往往会成为瓶颈.最近又遇到了一个典型的数据加载场景,顺手总结一下相关的经验. 综合来看,提高加载速度的办法主要有: 1 优化表结构和定义 1.     表定义中避免采用操作代价较高的数据类型,例如在允许的情况下用 INTEGER 或 DOUBLE 代替 DECIMAL. 2.     延迟进行约束或完整性检查,例如在数据加载之后再创建索引和外码约束等. 3.     针对性的做一些物理参数调优,例如调整数据库页

数据加载后保存数据到另外数据表中急急急急急急急急急急急急急急

问题描述 数据加载后保存数据到另外数据表中急急急急急急急急急急急急急急 datagrid容器 数据加载后保存到另一个数据库表 sqlite数据库中加载一组数据到datagrid中. 现在把数据保存到sql server 数据库中. 解决方案 Dim Con As New ADODB.Connection '定义ADO对象 Dim rs As New ADODB.Recordset Con.ConnectionString = "driver=SQL Server;server=192.168.1

Python之pandas数据加载、存储

Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 利用Web API操作网络资源 1. 读取文本文件和其他更好效的磁盘存储格式 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数. 1.1 pandas中的解析函数: read_csv 从文件.URL.文件型对象中加载带分隔符的数据.默认分隔符为逗号 read_table 从文件.URL.文件型对象中加载带分隔符的数

python数据分析笔记——数据加载与整理

  数据加载 导入文本数据 1.导入文本格式数据(CSV)的方法: 方法一:使用pd.read_csv(),默认打开csv文件.   9.10.11行三种方式均可以导入文本格式的数据. 特殊说明:第9行使用的条件是运行文件.py需要与目标文件CSV在一个文件夹中的时候可以只写文件名.第10和11行中文件名ex1.CSV前面的部分均为文件的路径. 方法二:使用pd.read.table(),需要指定是什么样分隔符的文本文件.用sep=""来指定. 2.当文件没有标题行时 可以让panda

As3 Loader复制加载的图片实例程序

先来了解一下Loader: 在 ActionScript 3.0 中使用的不是 ActionScript 2.0 MovieClipLoader 和 LoadVars 类,而是 Loader和 URLLoader 类. Loader 类的属性允许您设置要加载的内容并在运行时监视它的加载进度. 使用 ActionScript 设置 Loader 类的属性将会覆盖在"属性"检查器或"组件"检查器中设置的同名参数. 每个组件类都有一个 version 属性,该属性是一个类

Android优化双缓存的图片异步加载工具(LruCache+SoftReference)

之前在郭大神的博客看到使用LruCache算法实现图片缓存的.这里仿效他的思路,自己也写了一个. 并加入ConcurrentHashMap<String, SoftReference<Bitmap>>去实现二级缓存,因为ConcurrentHashMap是多个锁的线程安全,支持高并发.很适合这种频繁访问读取内存的操作. 下面整个思路是,使用了系统提供的LruCache类做一级缓存, 大小为运行内存的1/8,当LruCache容量要满的时候,会自动将系统移除的图片放到二级缓存中,但为

数据加载的性能测试

在数据仓库(DW)项目中ETL是必不可缺少的工具.所谓ETL指的是数据抽取(Extract).转换(Transform).清洗(Cleansing).装载(Load).大多数接触ETL工具设计的人可能觉得转换(Transform)是设计的重点.在处理转换(Transform)环节的时候采用局部优化的策略,比如并发线程来提高转换速度,其实我个人观点并不赞同,在我接触过移动仓库项目中转换(Transform)通常只不过是一些substr与trim操作,现在硬件CPU的缓存基本都在2M以上,假设有10