You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在SQL Loader中使用多条件筛选导入指定部门数据?

没问题,这事儿用SQL Loader自带的过滤功能就能轻松搞定,我给你一步步拆解操作:

使用SQL Loader导入CSV指定部门数据到Oracle表

1. 编写SQL Loader控制文件(核心步骤)

你需要创建一个控制文件(比如命名为dept_loader.ctl),在里面定义CSV的数据格式,同时通过WHEN子句精准筛选出部门为10、90、30、70的行。

以下是控制文件的示例代码,你可以根据自己的实际情况调整:

LOAD DATA
INFILE '你的CSV文件绝对路径.csv' -- 替换成你真实的CSV文件路径
-- 如果你的CSV第一行是表头(id、name、dept),一定要加上下面这句跳过表头
-- SKIP 1
INTO TABLE DEPT_LOADER
FIELDS TERMINATED BY ',' -- CSV字段用逗号分隔
-- 如果CSV里的字段是用双引号包裹的(比如"1","张三","10"),加上这句处理
-- OPTIONALLY ENCLOSED BY '"'
WHEN (DEPT IN ('10', '90', '30', '70')) -- 只导入指定部门的数据
(
    ID,    -- 对应CSV第一列
    NAME,  -- 对应CSV第二列
    DEPT   -- 对应CSV第三列
)

小提示:如果你的CSV里DEPT列是纯数字(没有引号),WHEN子句也可以写成WHEN (DEPT IN (10, 90, 30, 70)),效果是一样的。

2. 执行SQL Loader导入命令

打开终端(Windows用命令提示符,Linux/macOS用终端),运行sqlldr命令,传入数据库连接信息和控制文件参数。因为你的数据有70多万行,建议设置ROWS参数批量提交,能大幅提升导入效率。

示例命令如下,记得替换成你的数据库信息:

sqlldr 你的用户名/你的密码@你的Oracle服务名 control=dept_loader.ctl log=dept_loader.log bad=dept_loader.bad rows=10000

参数说明:

  • control:指定刚才写的控制文件路径
  • log:生成导入日志文件,里面会记录导入总条数、成功数、失败数等关键统计
  • bad:生成错误文件,存放导入失败的行(比如格式错误的行)
  • rows:每10000行数据提交一次事务,适合大数据量导入,减少数据库压力

额外注意事项

  • 确保Oracle用户拥有DEPT_LOADER表的插入权限
  • 如果CSV里的NAME字段包含逗号(比如"张三,李四"),一定要加上OPTIONALLY ENCLOSED BY '"',避免字段被错误拆分
  • 导入完成后优先查看dept_loader.log文件,确认导入结果是否符合预期

内容的提问来源于stack exchange,提问作者SwapnaSubham Das

火山引擎 最新活动