Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL加载器中的If子句_Sql_Oracle_Oracle10g_Sql Loader - Fatal编程技术网

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

是否可以在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 , 
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。