拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle基础知识
  3. Oracle核心经典分析
  4. 正文

Oracle-SQLLoader功能及使用

2023年11月24日 1341点热度 0人点赞 0条评论

目录

  • 一、SQLloader概念
    • 1、基本概念
    • 2、下面是SQL*Loader的一般用法:
      • (1)创建控制文件(Control File):
      • (2)创建数据文件(Data File):
      • (3)编写加载命令:
      • (4)执行加载命令:
      • (5)处理加载错误:
    • 3、SQL*Loader提供了丰富的功能和选项来满足不同的数据加载需求,例如:
  • 二、SQLLoader语法
    • 1、语法讲解
    • 2、控制文件语法:
      • (1)控制文件的说明
      • (2)以下是控制文件的基本语法:OPTIONS (可选的SQL*Loader选项)
      • (3)控制文件的参数解释
  • 三、案例
    • 1、开发提供20w的txt文件数据
      • (1)开发提供的原始数据文件
      • (2)数据处理后的数据文件
    • 2、数据库中创建表
    • 3、控制文件
    • 4、导入数据

一、SQLloader概念

1、基本概念

SQLLoader是Oracle数据库提供的一个数据导入工具,它用于将外部数据(例如文本文件)加载到Oracle数据库表中。

SQLLoader提供了高效的数据加载机制,可以处理大量数据,并提供了一些高级功能来处理数据转换和数据校验。

2、下面是SQL*Loader的一般用法:

(1)创建控制文件(Control File):

控制文件是描述数据加载过程的文本文件,它指定了数据文件的位置、表结构的映射、数据转换规则、数据校验规则等。可以通过自定义创建控制文件或使用 SQL*Loader 控制文件生成器来生成。

(2)创建数据文件(Data File):

数据文件包含要加载到数据库表中的数据。数据文件可以是纯文本文件、CSV文件或其他格式文件。确保数据文件的格式与控制文件定义的格式相匹配。

(3)编写加载命令:

在命令行或脚本中编写SQL*Loader的加载命令。命令包括指定控制文件、数据文件、数据库连接信息等。

(4)执行加载命令:

执行SQLLoader的加载命令,开始将数据加载到数据库表中。SQLLoader会读取数据文件,并根据控制文件定义的规则进行数据转换和数据校验。

(5)处理加载错误:

SQL*Loader在加载过程中会生成日志文件,记录加载的情况和错误信息。您可以检查日志文件以查看加载过程中是否有错误,并进行相应的处理。

3、SQL*Loader提供了丰富的功能和选项来满足不同的数据加载需求,例如:

  • 数据转换:可以在控制文件中定义数据列的转换规则,例如日期格式转换、字符串转换等。
  • 数据校验:可以使用控制文件中的条件和约束来进行数据校验,例如是否为唯一值、是否在范围内等。
  • 并行加载:可以通过指定并行加载选项来提高加载效率,利用多个进程同时加载数据。
  • 字符集处理:支持不同字符集的数据加载,允许在控制文件中指定字符集转换规则。

总体而言,SQLLoader是一个强大而灵活的工具,可用于高效地将外部数据加载到Oracle数据库中。

二、SQLLoader语法

1、语法讲解

Usage: SQLLDR keyword=value [,keyword=value,...]
Valid Keywords:
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 (Default all)
skip        -- number of logical records to skip (Default 0)
load        -- number of logical records to load (Default all)
errors      -- number of errors to allow (Default 50)
rows        -- number of rows in conventional path bind array or between direct path data saves(Default: Conventional path 64, Direct path all)
bindsize    -- size of conventional path bind array in bytes (Default 256000)
silent      -- suppress messages during run (header,feedback,errors,discards,partitions)
direct      -- use direct path (Default FALSE)
parfile     -- parameter file: name of file that contains parameter specifications
parallel    -- do parallel load (Default FALSE)
file        -- file to allocate extents from 
skip_unusable_indexes     -- disallow/allow unusable indexes or index partitions (Default FALSE)
skip_index_maintenance    -- do not maintain indexes, mark affected indexes as unusable (Default FALSE)
commit_discontinued       -- commit loaded rows when load is discontinued (Default FALSE)
readsize                  -- size of read buffer (Default 1048576)
external_table            -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE (Default NOT_USED)
columnarrayrows           -- number of rows for direct path column array (Default 5000)
streamsize                -- size of direct path stream buffer in bytes (Default 256000)
multithreading            -- use multithreading in direct path 
resumable                 -- enable or disable resumable for current session (Default FALSE)
resumable_name            -- text string to help identify resumable statement
resumable_timeout         -- wait time (in seconds) for RESUMABLE (Default 7200)
date_cache                -- size (in entries) of date conversion cache (Default 1000)
no_index_errors           -- abort load on any index errors (Default FALSE)

2、控制文件语法:

(1)控制文件的说明

控制文件是描述数据加载过程的文本文件,用于指定数据文件、表结构的映射、数据转换规则、数据校验规则等。

(2)以下是控制文件的基本语法:OPTIONS (可选的SQL*Loader选项)

LOAD DATA
INFILE 'data_file'
INTO TABLE table_name
APPEND|INSERT|REPLACE (可选的加载方式)
FIELDS TERMINATED BY ',' (字段分隔符)
(COLUMN1, COLUMN2, ... )

(3)控制文件的参数解释

OPTIONS:        可选的 SQL*Loader 选项,用于指定加载的行为和属性,例如字符集、并行加载等。
INFILE:         指定数据文件的路径和文件名。
INTO TABLE:     指定要加载数据的数据库表名。
APPEND|INSERT|REPLACE:     可选的加载方式,指定将数据添加到表中、插入数据替代现有数据或替换整个表。
FIELDS TERMINATED BY ',':  字段分隔符,用于指定数据文件中的字段分隔符,逗号 (‘,’) 是最常见的分隔符,但也可以是其他字符。
(COLUMN1, COLUMN2, ... ):  指定要加载的目标表的列名,以明确指定目标表中的哪些列与数据文件中的哪些字段对应。

三、案例

1、开发提供20w的txt文件数据

(1)开发提供的原始数据文件

原始文件

(2)数据处理后的数据文件

数据处理后的文件

2、数据库中创建表

sqlplus test/123
create table KSSM
(
xjbh VARCHAR2(50),
mitemcode VARCHAR2(100),
chang NUMBER,
kuan NUMBER,
zl NUMBER,
rksj DATE,
jtsl NUMBER,
jtwz VARCHAR2(100),
gw VARCHAR2(50),
cw VARCHAR2(10),
cx VARCHAR2(10),
zb VARCHAR2(100),
fqsj DATE,
phsj DATE,
fysj DATE,
dx VARCHAR2(100)
)

3、控制文件

LOAD DATA
INFILE '20w.txt' APPEND
INTO TABLE kssm
FIELDS TERMINATED BY ","            --以逗号隔开的各列
TRAILING NULLCOLS                   --针对最后一个列是null值
(xjbh,
mitemcode,
chang,
kuan,
zl,
rksj date "yyyy-mm-dd hh24:mi:ss",  --此处是日期格式
jtsl,
jtwz,
dx,
gw,
cw,
cx,
zb
)

注意事项:不管txt里面是varchar2还是number类型,处理的数据,全部为无符号标记

4、导入数据

sqlldr test/123 control=sqlload.ctl

...

20w的数据处理时长大约10-20秒。

 

 

 

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2023年12月27日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号