Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
Oracle SQL加载器数据插入:我们可以使用默认值作为另一列值吗?_Oracle_Sql Loader - Fatal编程技术网

Oracle SQL加载器数据插入:我们可以使用默认值作为另一列值吗?

Oracle SQL加载器数据插入:我们可以使用默认值作为另一列值吗?,oracle,sql-loader,Oracle,Sql Loader,我正在尝试使用SQL*加载程序导入数据。在导入期间,如果col1值为空,我需要将其替换为col0值。像这样,我需要为多个列设置默认值 我尝试通过添加长度检查将其设置为DEFAULTIF col1=col0。假设col1值为空,则其长度为0,并使用executedefaultif条件。但这是一个错误的说法 应为带引号的字符串或十六进制标识符,找到“col0” 有人可以帮助并解释如何将默认值设置为另一列值吗?一个简单的NVL函数调用就可以完成这项工作 下面是一个例子: SQL> create

我正在尝试使用SQL*加载程序导入数据。在导入期间,如果col1值为空,我需要将其替换为col0值。像这样,我需要为多个列设置默认值

我尝试通过添加长度检查将其设置为
DEFAULTIF col1=col0
。假设col1值为空,则其长度为0,并使用execute
defaultif
条件。但这是一个错误的说法

应为带引号的字符串或十六进制标识符,找到“col0”


有人可以帮助并解释如何将默认值设置为另一列值吗?

一个简单的
NVL
函数调用就可以完成这项工作

下面是一个例子:

SQL> create table test (col0 number, col1 varchar2(10), col2 number);

Table created.
控制文件:注意
col2“nvl(:col2,:col0)”
如果
col2
不存在,它将
col0
值放入
col2
。在我的示例中,它是第二行,
2,yyy,
,它不包含
col2
的值,因此它将填充
col0
值,即
2

load data 
infile *
replace
into table test
fields terminated by ","
trailing nullcols
(
col0,
col1,
col2 "nvl(:col2, :col0)"
)

begindata
1,xxx,111
2,yyy,
3,zzz,333
正在加载会话&结果:

SQL> $sqlldr scott/tiger@xe control=test02.ctl log=test02.log

SQL*Loader: Release 11.2.0.2.0 - Production on Pet Kol 17 21:48:59 2018

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 2
Commit point reached - logical record count 3

SQL> select * From test;

      COL0 COL1             COL2
---------- ---------- ----------
         1 xxx               111
         2 yyy                 2
         3 zzz               333

SQL>

嗨,Littlefoot,感谢您提供的详细信息,我尝试了建议的选项,它工作正常。我有30多列,行数为百万。我可以在@9分钟内插入所有内容。