SQL加载器中的If子句
是否可以在sql加载器中使用IF子句?我写了一个代码,但它给了我错误SQL加载器中的If子句,sql,oracle,oracle10g,sql-loader,Sql,Oracle,Oracle10g,Sql Loader,是否可以在sql加载器中使用IF子句?我写了一个代码,但它给了我错误 INTO TABLE TF_RTB9_DTL WHEN ((01) = 'D') OR (if (POA_COU_VAL = 0) then MAST_POA_ID = null end if) FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( TRANS_TYP POSITION(3), BO_ID , NAM
INTO TABLE TF_RTB9_DTL
WHEN ((01) = 'D') OR (if
(POA_COU_VAL = 0)
then MAST_POA_ID = null
end if)
FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
TRANS_TYP POSITION(3),
BO_ID ,
NAME ,
MID_NAM ,
LAS_NAM ,
PAN ,
NAM_FIR_JOINT ,
MIDD_NAM_FIR_JOINT,
LAS_NAM_FIR_JOINT ,
PAN_FIR_JOINT ,
NAM_SEC_JOINT ,
MIDD_NAM_SEC_JOINT,
LAS_NAM_SEC_JOINT ,
PAN_SEC_JOINT ,
ADD_LIN_1 ,
ADD_LIN_2 ,
ADD_LIN_3,
CITY ,
STATE ,
COUNTRY ,
PIN_COD ,
PERM_ADD_LIN_1 ,
PERM_ADD_LIN_2 ,
PERM_ADD_LIN_3 ,
PERM_CITY ,
PERM_STATE ,
PERM_COUNTRY ,
PERM_PIN_COD ,
POA_COU_VAL ,
MAST_POA_ID ,
TRANS_ID
)
如果POA\u COU\u VAL为0,则POA\u COU\u VAL必须为空,并且下一个值应在TRANS\u ID中输入。如何实现这一点?SQL*Loader是一个用于加载大批量数据的程序。它在加载过程中操作数据的功能有限 如果要转换数据,应该改用外部表。它们与SQL*Loader非常相似(该定义使用几乎相同的语法,但它们将数据文件作为表呈现给数据库。这意味着您可以在其上使用SQL。因此,在从命令行调用SQL*Loader时,您可以运行如下insert语句:
insert into target_table
select * from external table;
只有在您的情况下,才需要分解SELECT子句的项目,以便可以包含CASE()语句来实现附加逻辑
SQL*Loader是一个用于加载大批量数据的程序。在加载过程中,它只有有限的工具来操作数据 如果要转换数据,应该使用外部表。这些表与SQL*Loader非常相似(该定义使用几乎相同的语法,但它们将数据文件作为表呈现给数据库。这意味着您可以在其上使用SQL。因此,在从命令行调用SQL*Loader时,您可以运行如下insert语句:
insert into target_table
select * from external table;
只有在您的情况下,才需要分解SELECT子句的项目,以便可以包含CASE()语句来实现附加逻辑
SQL*加载器
,当
子句只有有限的布尔运算符时,尤其是缺少或
(请参阅)
如果必须使用SQL*Loader(并且不能按照APC的建议切换到外部表),则需要将乘以或子句中每个部分的部分
例如:
INTO TABLE TF_RTB9_DTL
WHEN (01) = 'D'
FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
TRANS_TYP POSITION(3),
...
...
MAST_POA_ID
)
INTO TABLE TF_RTB9_DTL
WHEN POA_COU_VAL = '0'
FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
TRANS_TYP POSITION(3),
...
...
MAST_POA_ID "NULL"
)
或考虑使用<代码> nulif函数()< /P>
SQL*Loader是一个棘手的工具,如果您能够使用外部表(文件必须在Oracle Server计算机上,而SQL*Loader可以连接到任何Oracle实例),则很可能会在外部表中获得更快的结果。SQL*Loader当
子句只有有限的布尔运算符时,尤其是缺少或
(见附件)
如果必须使用SQL*Loader(并且不能按照APC的建议切换到外部表),则需要将乘以或子句中每个部分的部分
例如:
INTO TABLE TF_RTB9_DTL
WHEN (01) = 'D'
FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
TRANS_TYP POSITION(3),
...
...
MAST_POA_ID
)
INTO TABLE TF_RTB9_DTL
WHEN POA_COU_VAL = '0'
FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
TRANS_TYP POSITION(3),
...
...
MAST_POA_ID "NULL"
)
或考虑使用<代码> nulif函数()< /P>
SQL*Loader是一个棘手的工具,如果您能够使用外部表(文件必须位于Oracle Server计算机上,而SQL*Loader可以连接到任何Oracle实例),则很可能会在外部表中获得更快的结果。我可以使用case或decode语句吗。例如:-decode(POA_COU_VAL,0,MAST_POA_ID)CASE是一个比DECODE更灵活的函数,但如果需要,可以使用DECODE。嘿,我可以使用CASE或DECODE语句。例如:-DECODE(POA_COU_VAL,0,MAST_POA_ID)CASE是一个比DECODE更灵活的函数,但如果需要,可以使用DECODE。