oracle - SQL*Loader 控制文件将一个数据字段映射到两列
问题描述
我正在使用带有sqlldr
命令的 shell 脚本,将数据从 CSV 文件加载到表中。
例如包含此数据的 CSV 文件:
dog;cat;bird;fish;
这个控制文件:
OPTIONS (SKIP=1) LOAD DATA
INFILE *
APPEND
INTO TABLE animals
FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"'
(
animal1, animal2, animal3, animal4)
按预期加载到表中:
ANIMAL1 ANIMAL2 ANIMAL3 ANIMAL4
---------- ---------- ---------- ----------
dog cat bird fish
但现在我想将数据加载到同一张表中
ANIMAL1 ANIMAL2 ANIMAL3 ANIMAL4
---------- ---------- ---------- ----------
dog fish bird fish
因此,我希望在第二列和第四列中都有“鱼”而不是“猫”。
我怎样才能修改我的控制文件来实现呢?
解决方案
您可以将其他字段作为SQL 表达式的一部分引用,因此在这种情况下,您可以使用绑定变量类型语法将文件中的字段值替换为另一个字段:
...
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
(
animal1,
animal2 ":animal4",
animal3,
animal4
)
在使用原始控制文件加载示例 CSV 并按上表进行修改后,该文件包含:
select * from animals;
ANIMAL1 ANIMAL2 ANIMAL3 ANIMAL4
---------- ---------- ---------- ----------
dog cat bird fish
dog fish bird fish
推荐阅读
- mysql - 一般意义上的h2与hibernate和MySql之间的区别
- php - TYPO3 流体阵列访问
- laravel - 从 Laravel 的数据库中获取 email_verified 检查条件数据
- ios - React-Native:错误:无法为 iOS 项目安装 CocoaPods 依赖项,这是此模板所需的
- android - 帆布?或 View.onDraw() 方法中的 Canvas
- mysql - “字段列表”中的未知列“u.MemberId”
- algorithm - 随机森林的可能算法
- excel - VBA - 自动工作表保护丢失密码
- css - 一列固定宽度的 HTML 表格,其他列流动且等宽
- python - 如何为 Android repo 工具实现 git hook