`
pengwei.daily
  • 浏览: 23301 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

SQL*Loader - 十万个怎么办 系列一

 
阅读更多

给我的是一个Excel文件怎么办?

一般处理Excel数据,最常用的方式是将其保存为CVS(Comma Separated Values,逗号分隔值)格式文件;

单击“文件” -> “另存为”,在“保存类型”下拉框中选择CVS。

然后按照《认识 SQL*Loder》的示例执行导入。

 

要加载的文件不是以逗号分隔怎么办?

  • 修改数据文件,将分隔符替换为逗号
  • 修改控制文件,将FIELDS TERMINATED BY 的值修改为实际的分隔符

 

要加载的数据中包含分隔符怎么办?

向BONUS插入如下数据:

SMITH,CLEAK,3904
ALEEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
FILEDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'

OPTIONALLY ENCLOSED BY 参数指明定界符为双引号(CVS默认定界符就是双引号)。

 

数据文件没有分隔符怎么办?

提供如下数据:

SMITH      CLEAK         3904
ALEEN      SALERMAN  2891
WARD      SALERMAN   3128
KING        PRESIDENT  2523

这就是定长字符串,SQLLDR中处理定长字符串:

LOAD DATA
INFILE ldr_case3.ctl
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:5),
JOB position(7:15),
SAL position(17:20)
)

position的用户相当灵活:

  • position(*+2:15) - 直接指定数值的方式叫做绝对偏移量;如果使用*号,专业名词叫相对偏移量,表示上一个字段从哪里结束,这次就从哪里开始,相对偏移量也可以再做运算
  • position(*)char(9) - 这种相对偏移量+类型和长度的优势在于,只需要为第一列指定开始位置,其他列只需要指定长度就可以了。

数据文件中的列比要导入的表中列少怎么办?

列少不怕,关键要看控制文件中的配置;

考虑一种情况:如果缺少的列必须赋值怎么办?可以修改控制文件,直接指定COMM列,并赋初始值

LOAD DATA
INFILE ldr_case3.ctl
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:5),
JOB position(7:15),
SAL position(17:20),
COMM "0"
)

COMM的值可以根据SAL列值而定,通过一个SQL中的函数substr取SAL值的第一列,赋予COMM列。

COMM "substr(:SAL, 1, 1)"

 

数据文件中的列比要导入的表中列多怎么办?

  1. 修改数据文件,将多余的数据删除,不过这种处理方式,小数据量时还算可行,一旦数据文件较大,几百兆甚至上千兆,修改数据文件耗时耗力。
  2. 提供如下数据文件
SMITH 7369 CLERK        800    20
ALLEN 7499 SALESMAN 1600  30
WARD 7521 SALESMAN 1250  30
JONES 7566 MANAGER  2975  20

 需要导入第1、3、4列,而跳过第2、5列

LOAD DATA
INFILE ldr_case3.ctl
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:5),
TCOLFOLLER position(8:11),
JOB position(7:15),
SAL position(17:20)
)

FILLER, 可以用来过滤列,相当于第8到第11列之间的数据不导入。

 

如果提供如下数据:

SMITH,7369,CLERK,800,20
ALLEN,7499,SALESMAN,1600,30
WARD,7521,SALESMAN,1250,30
JONES,7566,MANAGER,2975,20

则处理:

LOAD DATA
INFILE ldr_case3.ctl
TRUNCATE INTO TABLE BONUS
FIELDS TERMINATED BY ","
(ENAME,TCOL FILLER,JOB,SAL)

此控制文件中必须指定FILLER,不然列值就可能不对应。

 

 

提供多个数据文件,要导入同一张表怎么办?

对于逻辑比较复杂的系统,导出的数据源可能源于多个系统,因此提供给DBA的也是多个数据文件。

不需要执行多次加载,只要在控制文件中做适当配置即可。

注意: 提供的数据文件中的数据存放格式必须完全相同

 

数据文件ldr_case8_1.dat

10, SMITH, SALES,MANAGER
11, ALLEN, TECH,MANAGER
16, BLAKE, HR,MANAGER

数据文件ldr_case8_2.dat

12, WARD, SERVICE,MANAGER
13, TURNER, SELLS,DIRECTOR
15, JAMES, HR,DIRECTOR

数据文件ldr_case8_3.dat

17, MILLER, PRESIDENT,

导入数据:

LOAD DATA
INFILE ldr_case1.ctl
INFILE ldr_case2.ctl
INFILE ldr_case3.ctl
TRUNCATE INTO TABLE MANAGER
FIELD TERMINATED BY ","
(MGRNO, NAME, JOB, REMARK)
分享到:
评论

相关推荐

    SQL*Loader

    SQL*Loader是Oracle数据库系统中的一个实用工具,用于快速加载大量数据到数据库表中。它提供了高效的数据导入功能,能够处理各种格式的数据文件,如文本文件、CSV文件等。SQL*Loader通过直接路径加载方法,可以显著...

    SqlLoaderPlus100 DB 客户端工具

    1. **SqlLoader概述**: SQL*Loader是Oracle数据库系统中一个内置的数据加载工具,用于快速将大量数据从文本文件批量加载到数据库中。SqlLoaderPlus100在此基础上增加了更多特性,例如增强的错误处理、性能优化和...

    Oracle数据库装载外部数据工具SQL*Loader的应用.pdf

    此外,SQL*Loader提供了一系列参数和选项,允许用户根据自己的需求对数据装载过程进行细致的控制。例如,可以指定使用或不使用特定的字段转换、记录过滤以及对特定字段应用SQL函数等。SQL*Loader还支持多种错误处理...

    一个简单的调用sql loader批量数据导入程序

    控制文件是SQL*Loader的核心,它包含了一系列的指令,如字段的名称、数据类型、长度、转换规则等。例如,你可以指定某个字段是否可选,或者如何处理日期和数字等特殊类型的数据。控制文件的格式如下: ```sql LOAD ...

    SQL_LOADER例子

    在描述中提到,"sqlloader方便数据的导入导出",确实如此,SQL*Loader不仅支持数据的导入,还可以用于导出数据。对于导入,它能处理大量数据,并且支持多种数据类型,包括字符串、数字、日期等。对于导出,可以通过...

    用C++ 产生 SQLLoader 各类文件

    在将Foxpro的dbf文件通过Oracle工具SQL*Loader加载到Oracle数据库中,通常需要经过一系列步骤,包括数据转换、创建表结构以及执行数据加载。本文主要介绍如何使用C++来自动化这个过程,提高效率。 1. **数据转换**...

    通过sqlloader将csv中文件写入数据库中

    在提供的压缩包`sqlLoader`中,可能包含示例的控制文件和数据文件,你可以按照上述步骤进行操作,以实际操作来加深理解。通过实践,你将能够熟练掌握`SQL*Loader`,从而更高效地管理和维护数据库中的数据。

    Oracle 10g Concepts (Oracle 10g 概念中文手册)——破解版!!

    - SQL*Loader是一种快速批量加载数据到Oracle数据库的工具。 - **11.6 外部表** - 外部表允许直接访问位于文件系统或其他文件格式中的数据。 - **11.7 LogMiner** - LogMiner是用于从重做日志文件中提取更改数据...

    oracle 10g concepts

    - 数据块是最小的数据存储单位,扩展是一系列连续的数据块组成的逻辑单元,而段则是相同类型数据的集合,例如所有表的行构成一个表段。 - **2.2 数据块纵览** - 数据块大小通常是8KB、16KB或32KB,取决于操作系统...

    oracle逻辑导入导出.pptx

    总结来说,Oracle逻辑导入导出涵盖了一系列技术,如SQL*Loader用于快速加载数据,外部表提供对文件系统数据的直接访问,而数据泵则为大规模数据迁移提供了高效的解决方案。这些工具共同构建了Oracle数据库强大的数据...

    oracle sql loader全攻略

    通过命令行调用SQL Loader时,需要指定一系列的关键字参数来控制加载过程。下面列举了一些常用的关键字及其作用: - **userid**:指定Oracle数据库的用户名和密码,格式为`username/password`。 - **control**:...

    Oracl-SQL Lorder

    总之,Oracle SQL*Loader是一个强大的工具,它使得从各种数据源导入数据到Oracle数据库变得简单且高效。无论是在不同的操作系统上还是在处理不同格式的数据时,SQL*Loader都能提供一致的性能和可靠性,是数据迁移和...

    oracle的SQl

    它不仅支持基本的数据检索和更新操作,还提供了一系列高级功能,如事务控制、安全性管理和复杂的数据处理等。 #### 二、Oracle SQL常用操作 1. **数据定义语言(DDL)**: - `CREATE`:创建新的数据库对象,如表...

    IT笔试题全集_数据库Oracle篇_追雨制作_2011版[参照].pdf

    - **PROCEDURE** 是无返回值的PL/SQL代码块,通常用于执行一系列操作。 - **PACKAGE** 是一组相关的FUNCTIONs和PROCEDURES的集合,它可以提供模块化和封装,增强代码的可重用性和效率。 2. **序列的当前值获取** ...

    ORACLE SQL*加载程序的使用方法.pdf

    ORACLE SQL*加载程序(SQL*Loader)是Oracle提供的用于将外部数据文件加载到数据库表中的工具。它是一种数据转换工具,支持数据的导入、迁移和整合,特别适用于数据量大和复杂数据结构的情况。SQL*Loader能够有效地...

    windowns下利用bat命令+oracle的sqlldr功能导入数据

    Oracle的SQL*Loader(简称SQLLDR)工具就是这样一个强大的数据加载器,它能快速高效地将数据从外部文件批量导入到数据库中。结合批处理(BAT)脚本,我们可以自动化这个过程,提高工作效率。下面我们将详细探讨如何...

    Oracle数据库基础知识

    - **区(Extent)**:一系列相邻的数据块,组成段的一部分。 - **块(Block)**:数据库中最小的数据存储单位。 **1.3.2 表(Table)** - **列(Column)**:表中的每一列都有特定的数据类型和长度。 - **行(Row)**:表中...

    oracle学习资料

    - **通过查询从一个表创建另一个表**:`CREATE TABLE 新表名 AS SELECT * FROM 原表名;` - **查看表的系统信息**:使用`DESCRIBE 表名`或`DBMS_METADATA.GET_DDL('TABLE', '表名')`获取表结构信息。 - **更改表**...

    使用Oracle 移植工作台从 Microsoft SQL Server 移植到 Oracle 数据.docx

    - **使用向导和脚本进行移植**: Oracle 移植工作台提供了一系列向导和脚本支持,帮助用户顺利完成从源数据库到目标数据库的移植。 - **在线或离线捕获**: 可选择在线捕获实时数据库活动,或离线捕获预先收集的元数据...

    oracle dba的官方教材3

    - **Oracle Grid Infrastructure for a Single Instance**:为了支持单实例数据库,Oracle提供了Grid Infrastructure,它包括了一系列的管理和监控工具,如自动存储管理(ASM)、Oracle Restart等。 - **课程示例:HR...

Global site tag (gtag.js) - Google Analytics