oracle - SQL Loader 使用另一列有条件地加载
问题描述
我正在尝试使用另一列的引用有条件地将值加载到表中的一列中。
这是我的ctl文件
OPTIONS (SKIP=1)
load data
infile "C:\Users\admin\Desktop\Price Redesign\wcsCtoPrice*.csv"
append into table XCTOPRICELOAD
fields terminated by "|"
optionally enclosed by '"' TRAILING NULLCOLS
(TRADE_POS_NAME,PS_FLAG,
MEMBER_ID "CASE WHEN PS_FLAG = '1' THEN '7333333333333536385' ELSE '7000000000000000103' END",
PRICE_ID,COUNTRY,PRICE_GEO,INCO_TERMS,PRICE_LIST_TYPE,CURRENCY,CONFIG_ID,GENERIC_PRICE_FLAG,OVERALL_STATUS,NET_PRICE,PRICE_START_DATE,PRICE_END_DATE,PRICE_SOURCE,DEAL_NUMBER,PA_NR,TIER_ID,PRICE_ERROR_MSG,DELETE_FLAG)
这是表结构
create table XCTOPRICELOAD
(
ID number generated by default on null as identity,
TRADE_POS_NAME varchar2(254),
PS_FLAG VARCHAR2(254),
MEMBER_ID VARCHAR2(254),
PRICE_ID VARCHAR2(254),
COUNTRY varchar2(5),
PRICE_GEO varchar2(5),
INCO_TERMS varchar2(5),
PRICE_LIST_TYPE varchar2(254),
CURRENCY varchar2 (5),
CONFIG_ID varchar2(20),
GENERIC_PRICE_FLAG varchar2 (5),
OVERALL_STATUS varchar2 (5),
NET_PRICE varchar2(20),
PRICE_START_DATE varchar2(30),
PRICE_END_DATE varchar2(30),
PRICE_SOURCE varchar2 (5),
DEAL_NUMBER varchar2 (20),
PA_NR varchar2 (10),
TIER_ID varchar2 (10),
PRICE_ERROR_MSG varchar2 (254),
DELETE_FLAG varchar2 (5),
IS_ACTIVE NUMBER(1),
CONSTRAINT PK_XCTOPRICELOAD PRIMARY KEY (ID)
);
这是我的输入文件
TRADE_POS_NAME|PS_FLAG|PRICE_ID|COUNTRY|PRICE_GEO|INCO_TERMS|PRICE_LIST_TYPE|CURRENCY|CONFIG_ID|GENERIC_PRICE_FLAG|OVERALL_STATUS|NET_PRICE|PRICE_START_DATE|PRICE_END_DATE|PRICE_SOURCE|DEAL_NUMBER|PA_NR|TIER_ID|PRICE_ERROR_MSG|DELETE_FLAG
0_ECI0406795_02_DK_DDP|0|ECI0406795|DK|02|DDP||USD|31489611|N|V|2974.73|2020-05-04 00:00:00.000000|9999-12-31 23:59:00.000000|LP|||||N
我收到 MEMBER_ID 列加载的列被拒绝错误。
请问这方面有什么帮助吗?
解决方案
在您引用的字段前面加上一个冒号。
MEMBER_ID "CASE WHEN :PS_FLAG = '1' THEN '7333333333333536385' ELSE '7000000000000000103' END"
推荐阅读
- angular - Angular 7在父组件上监听事件的问题
- android - Unity gradle build - 合并 dex 档案时出错
- delphi - 如何解决 [FireDAC][Phys][SQLite] 错误:无法打开数据库文件,当应用程序安装在 programFiles 中时?
- graphql - Graphql 查询中的 ID 是否自动加密?
- postgresql - 如何将数据从一个数据库移动到另一个数据库
- context-free-grammar - 查找以下语言的上下文无关语法
- optimization - 如何查找 2 个列表中的项目是否匹配(但不能使用直接相等)
- java - 通过 ProcessBuilder 的(阻塞)交互式 shell
- javascript - 通过表单将用户发送到付款 URL
- c - GMP 的 mpz_init_set_str 导致 realloc 错误