Oracle 数据库进行批量数据导入有多种方法,并没有一个像 MySQL 的 LOAD DATA 那样唯一的指令。根据数据来源、文件格式和操作需求,最常用的工具是 SQL*Loader 和 外部表。
以下是 Oracle 中批量导入数据的主要方法:
1. SQL*Loader (sqlldr) - 经典工具
这是 Oracle 提供的专用于高性能批量数据加载的命令行工具。它功能强大,是数据迁移和日常批量加载最常用的工具。
核心概念:
- 控制文件 (.ctl):这是 SQL*Loader 的核心,一个文本文件,用于定义:
- 数据文件的位置和格式(如分隔符、定长)。
- 目标表的名称。
- 数据文件中的字段如何映射到表的列。
- 加载方式(INSERT, APPEND, REPLACE, TRUNCATE)。
- 数据文件 (.dat, .csv, .txt):包含要加载的原始数据。
- 日志文件 (.log):加载过程结束后生成的详细报告,包含成功和失败的行数及错误信息。
- 错误文件 (.bad):包含所有因格式错误或违反约束而无法被加载的记录。
- 废弃文件 (.dsc):包含不符合控制文件中指定条件而被过滤的记录。
基本用法:
-
创建控制文件
load_employees.ctl:OPTIONS (SKIP=1) -- 跳过数据文件的第一行(标题行) LOAD DATA INFILE '/path/to/employees_data.csv' -- 数据文件路径 BADFILE '/path/to/employees.bad' -- 错误文件路径 DISCARDFILE '/path/to/employees.dsc' -- 废弃文件路径 APPEND INTO TABLE employees -- 操作模式:追加到表 employees FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' -- 字段以逗号分隔,被双引号包围 TRAILING NULLCOLS -- 处理数据文件中可能缺失的列(将其设为NULL) ( id INTEGER, name CHAR, department CHAR, salary DECIMAL EXTERNAL NULLIF salary=BLANKS, -- 如果salary字段为空,则设为NULL hire_date DATE "YYYY-MM-DD" NULLIF hire_date=BLANKS -- 定义日期格式 ) -
在操作系统命令行中执行:
sqlldr userid=username/pas

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



