Oracle批量导入数据方案总结

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):包含不符合控制文件中指定条件而被过滤的记录。
基本用法:
  1. 创建控制文件 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 -- 定义日期格式
    )
    
  2. 在操作系统命令行中执行

    sqlldr userid=username/pas
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值