Oracle SQL*Loader 使用指南(第二部分)

简介:

本文接Oracle SQL*Loader 使用指南(第一部分)

5, 设置行结束标志 (STR) , 在导入大对象时很有用!

LOAD DATA

INFILE 'c:\data\mydata.csv' "str '*****'"

REPLACE INTO TABLE book

fields terminated by "," optionally enclosed by '"' 

(

book_title ,

book_price ,

book_pages ,

book_id

)

Mydata.csv 文件内容:

Oracle Essentials bbbbbbbbbbbbb

 ,3495,355,1 *****

SQL*Plus: The Definitive

Guide  ,3995,502,2 *****

Oracle PL/SQL

  Programming ,4495,87,3 *****

Oracle8 Design Tips  ,1495,115,4 ***** 

例子:

SQL> truncate table book;


表被截断。


SQL> host sqlldr hr/hr control =c:\data\loader.ctl log=c:\data\log.log

SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 8 14 10:16:49 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

达到提交点 - 逻辑记录计数 4

SQL> select * from book;

   BOOK_ID BOOK_TITLE                          BOOK_PRICE BOOK_PAGES

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

         1 Oracle Essentials bbbbbbbbbbbbb           3495        355

         2 SQL*Plus: The Definitive                  3995        502

         3 Oracle PL/SQL                             4495         87

         4 Oracle8 Design Tips                        1495        115

6, 将多个数据flat 文件同时load 进数据库

LOAD DATA

INFILE 'c:\data\mydata.csv' "str '*****'"

INFILE 'c:\data\mydata2.csv' "str '*****'"

REPLACE INTO TABLE book

fields terminated by "," optionally enclosed by '"' 

(

book_title ,

book_price ,

book_pages ,

book_id

)

Mydata.csv 数据内容如下:

Oracle Essentials bbbbbbbbbbbbb

 ,3495,355,1 *****

SQL*Plus: The Definitive

Guide  ,3995,502,2 *****

Oracle PL/SQL

  Programming ,4495,87,3 *****

Oracle8 Design Tips  ,1495,115,4 *****

Mydata2.csv 数据内容如下:

新概念1

 ,3495,355,1 *****

新概念2

       ,3995,502,2 *****

新概念3

       ,4495,87,3 *****

新概念4 ,1495,115,4 *****

例子:

SQL> truncate table book;

表被截断。

SQL> host sqlldr hr/hr control =c:\data\loader.ctl log=c:\data\log.log

SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 8 14 10:32:55 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

达到提交点 - 逻辑记录计数 4

达到提交点 - 逻辑记录计数 8

SQL> select * from book;

   BOOK_ID BOOK_TITLE                          BOOK_PRICE BOOK_PAGES

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

         1 Oracle Essentials bbbbbbbbbbbbb           3495        355

         2 SQL*Plus: The Definitive                  3995        502

         3 Oracle PL/SQL                             4495         87

         4 Oracle8 Design Tips                        1495        115

         新概念1                                   3495        355

         新概念2                                   3995        502

         新概念3                                   4495         87

         新概念4                                        1495        115

 

已选择8行。

7, 如果文件名中包含有特殊字符,可以使用“\” 逃逸字符

如以下例子

INFILE 'mi_\'deci'   实际文件名为:mi_'deci

INFILE "mi_\"deci'   实际文件名为:mi_"deci

INFILE "mi_\\deci'   实际文件名为:mi_\deci

8load 数据到表分区:

LOAD DATA

INFILE 'c:\data\mydata.csv' "str '*****'"

REPLACE INTO TABLE book PARTITION (p1)

fields terminated by "," optionally enclosed by '"' 

(

book_title ,

book_price ,

book_pages ,

book_id

)

例子:

create table BOOK

(

  BOOK_ID    NUMBER,

  BOOK_TITLE VARCHAR2(35),

  BOOK_PRICE NUMBER,

  BOOK_PAGES NUMBER

)

partition by range  (book_id)(

partition p1 values less than (10),

partition p2 values less than (20))

 

SQL> host sqlldr hr/hr control =c:\data\loader.ctl log=c:\data\log.log

SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 8 14 11:01:13 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

达到提交点 - 逻辑记录计数 4

SQL> select * from book partition (p1);

   BOOK_ID BOOK_TITLE                          BOOK_PRICE BOOK_PAGES

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

         1 Oracle Essentials bbbbbbbbbbbbb           3495        355

         2 SQL*Plus: The Definitive                  3995        502

         3 Oracle PL/SQL                             4495         87

         4 Oracle8 Design Tips                        1495        115

 

SQL> select * from book partition (p2);

未选定行

SQL>

9 null if 空替代:

LOAD DATA

INFILE *

REPLACE INTO TABLE michigan_features

fields terminated by "," optionally enclosed by '"' 

(

feature_name ,

short_feature_name ,

elevation

NULLIF elevation = ' 0',

feature_type

NULLIF feature_type = 'ppl',

county

)

begindata

MI ,Chatham,0,dl,Alger

MI ,Shingleton,821,al,Alger

MI, Rumely,0,ppl,Alger

MI ,Sundell,1049,,,

 

例子:

drop table michigan_features;

 

create table michigan_features(

feature_name varchar2(100),

short_feature_name varchar2(100),

elevation number,

feature_type varchar2(100),

county varchar2(100))

SQL> select feature_type from michigan_features;

FEATURE_TYPE

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

dl

al

SQL*Loader 数据的提交

一般情况下是在导入数据文件数据后提交的。

也可以通过指定 ROWS= 参数来指定每次提交记录数。  

提高 SQL*Loader 的性能:

1) 一个简单而容易忽略的问题是,没有对导入的表使用任何索引和/或约束(主键)。如果这样做,甚至在使用ROWS=参数时,会很明显降低数据库导入性能。

2) 可以添加 DIRECT=TRUE来提高导入数据的性能。当然,在很多情况下,不能使用此参数。

3) 通过指定 UNRECOVERABLE选项,可以关闭数据库的日志。这个选项只能和 direct 一起使用。

4) 可以同时运行多个导入任务.

5)可以使用readsize 参数加大读入区内存大小, 默认为64K 一般的系统最大支持到20M

6SKIP_INDEX_MAINTENANCE = {TRUE | FALSE}

DIRECT 方式load 数据的时候,设置是否维护索引可以通过 此参数来设置

7SKIP_UNUSABLE_INDEXES = {TRUE | FALSE}

   DIRECT 方式load 数据的时候 如果有索引为unusable 是否继续load 数据

常规导入与direct导入方式的区别:

常规导入可以通过使用 INSERT语句来导入数据。Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中。

常规导入的过程

STEP 1

Generate SQL commands for the data to be loaded.

STEP 2

Process the SQL commands (parse, fetch, execute).

STEP 3

Find partial data blocks, or get new extents.

STEP 4

If required blocks are not in the buffer cache, read

the data blocks from disk.

STEP 5

Fill the appropriate data blocks in the buffer cache.

STEP 6

Write data blocks to the disk.

Direct 导入过程

STEP 1

Format the input data into Oracle data blocks.

STEP 2

Get new extents for the table to be loaded.

STEP 3

Write the formatted data blocks to the disk.

使用direct 方式导入的一些限制:

Restrictions on Direct Path Loads

 Clustered tables

 Object columns (Oracle9i can handle these)

 LOB columns (Oracle9i can handle these)

 VARRAY columns

 Nested tables (Oracle9i can handle these when they are loaded separately)

 REF columns (Oracle9i can handle these)

 BFILE columns


 










本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/648637,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
287 8
|
8月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
285 6
|
9月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
9月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
|
9月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
3月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
352 93
|
2月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
187 0
|
5月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
5月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
251 11

推荐镜像

更多