给我的是一个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)"
数据文件中的列比要导入的表中列多怎么办?
- 修改数据文件,将多余的数据删除,不过这种处理方式,小数据量时还算可行,一旦数据文件较大,几百兆甚至上千兆,修改数据文件耗时耗力。
- 提供如下数据文件
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是Oracle数据库系统中的一个实用工具,用于快速加载大量数据到数据库表中。它提供了高效的数据导入功能,能够处理各种格式的数据文件,如文本文件、CSV文件等。SQL*Loader通过直接路径加载方法,可以显著...
1. **SqlLoader概述**: SQL*Loader是Oracle数据库系统中一个内置的数据加载工具,用于快速将大量数据从文本文件批量加载到数据库中。SqlLoaderPlus100在此基础上增加了更多特性,例如增强的错误处理、性能优化和...
此外,SQL*Loader提供了一系列参数和选项,允许用户根据自己的需求对数据装载过程进行细致的控制。例如,可以指定使用或不使用特定的字段转换、记录过滤以及对特定字段应用SQL函数等。SQL*Loader还支持多种错误处理...
控制文件是SQL*Loader的核心,它包含了一系列的指令,如字段的名称、数据类型、长度、转换规则等。例如,你可以指定某个字段是否可选,或者如何处理日期和数字等特殊类型的数据。控制文件的格式如下: ```sql LOAD ...
在描述中提到,"sqlloader方便数据的导入导出",确实如此,SQL*Loader不仅支持数据的导入,还可以用于导出数据。对于导入,它能处理大量数据,并且支持多种数据类型,包括字符串、数字、日期等。对于导出,可以通过...
在将Foxpro的dbf文件通过Oracle工具SQL*Loader加载到Oracle数据库中,通常需要经过一系列步骤,包括数据转换、创建表结构以及执行数据加载。本文主要介绍如何使用C++来自动化这个过程,提高效率。 1. **数据转换**...
在提供的压缩包`sqlLoader`中,可能包含示例的控制文件和数据文件,你可以按照上述步骤进行操作,以实际操作来加深理解。通过实践,你将能够熟练掌握`SQL*Loader`,从而更高效地管理和维护数据库中的数据。
- SQL*Loader是一种快速批量加载数据到Oracle数据库的工具。 - **11.6 外部表** - 外部表允许直接访问位于文件系统或其他文件格式中的数据。 - **11.7 LogMiner** - LogMiner是用于从重做日志文件中提取更改数据...
- 数据块是最小的数据存储单位,扩展是一系列连续的数据块组成的逻辑单元,而段则是相同类型数据的集合,例如所有表的行构成一个表段。 - **2.2 数据块纵览** - 数据块大小通常是8KB、16KB或32KB,取决于操作系统...
总结来说,Oracle逻辑导入导出涵盖了一系列技术,如SQL*Loader用于快速加载数据,外部表提供对文件系统数据的直接访问,而数据泵则为大规模数据迁移提供了高效的解决方案。这些工具共同构建了Oracle数据库强大的数据...
通过命令行调用SQL Loader时,需要指定一系列的关键字参数来控制加载过程。下面列举了一些常用的关键字及其作用: - **userid**:指定Oracle数据库的用户名和密码,格式为`username/password`。 - **control**:...
总之,Oracle SQL*Loader是一个强大的工具,它使得从各种数据源导入数据到Oracle数据库变得简单且高效。无论是在不同的操作系统上还是在处理不同格式的数据时,SQL*Loader都能提供一致的性能和可靠性,是数据迁移和...
它不仅支持基本的数据检索和更新操作,还提供了一系列高级功能,如事务控制、安全性管理和复杂的数据处理等。 #### 二、Oracle SQL常用操作 1. **数据定义语言(DDL)**: - `CREATE`:创建新的数据库对象,如表...
- **PROCEDURE** 是无返回值的PL/SQL代码块,通常用于执行一系列操作。 - **PACKAGE** 是一组相关的FUNCTIONs和PROCEDURES的集合,它可以提供模块化和封装,增强代码的可重用性和效率。 2. **序列的当前值获取** ...
ORACLE SQL*加载程序(SQL*Loader)是Oracle提供的用于将外部数据文件加载到数据库表中的工具。它是一种数据转换工具,支持数据的导入、迁移和整合,特别适用于数据量大和复杂数据结构的情况。SQL*Loader能够有效地...
- **区(Extent)**:一系列相邻的数据块,组成段的一部分。 - **块(Block)**:数据库中最小的数据存储单位。 **1.3.2 表(Table)** - **列(Column)**:表中的每一列都有特定的数据类型和长度。 - **行(Row)**:表中...
- **通过查询从一个表创建另一个表**:`CREATE TABLE 新表名 AS SELECT * FROM 原表名;` - **查看表的系统信息**:使用`DESCRIBE 表名`或`DBMS_METADATA.GET_DDL('TABLE', '表名')`获取表结构信息。 - **更改表**...
Oracle的SQL*Loader(简称SQLLDR)工具就是这样一个强大的数据加载器,它能快速高效地将数据从外部文件批量导入到数据库中。结合批处理(BAT)脚本,我们可以自动化这个过程,提高工作效率。下面我们将详细探讨如何...
- **使用向导和脚本进行移植**: Oracle 移植工作台提供了一系列向导和脚本支持,帮助用户顺利完成从源数据库到目标数据库的移植。 - **在线或离线捕获**: 可选择在线捕获实时数据库活动,或离线捕获预先收集的元数据...
- **Oracle Grid Infrastructure for a Single Instance**:为了支持单实例数据库,Oracle提供了Grid Infrastructure,它包括了一系列的管理和监控工具,如自动存储管理(ASM)、Oracle Restart等。 - **课程示例:HR...