0

希望你今天过得愉快。我正在学习如何在 SQL-LOADER 上使用函数,我对此有疑问,假设我有这张表

table a
--------------
code
name
dept
birthdate
secret

data.csv 文件包含此数据

name
dept
birthdate

我正在使用此代码通过 SQLLOADER 将数据加载到其中

LOAD DATA
INFILE "data.csv"
APPEND INTO TABLE a;
FIELDS TERMINATED BY ',' optionally enclosed by '"'
TRAILING NULLCOLS
(code "getCode(:name,:dept)",name,dept,birthdate,secret "getSecret(getCode(:name,:dept),birthdate)")

所以这就像一个魅力,它从我的 getCode 和 getSecret 函数中获取值,但是,我想引用先前计算的值(通过 getCode),所以我不必在 getSecret 上嵌套函数,如下所示:

getSecret(**getCode(:name,:dept)**,birthdate)

我试过这样做:

getSecret(**:code**,birthdate)

但它从文件中获取原始值(意味着null)而不是由函数计算(猜测是因为它是即时执行的),所以我的问题是是否有办法避免这些嵌套调用先前计算的值,所以我不必失去性能一遍又一遍地重新计算相同的值(我使用的真实表大约大 10 倍,并且为这些先前计算的值嵌套了很多函数,所以我猜这会降低性能)

任何帮助将不胜感激,谢谢!


补充

抱歉,但我之前没有使用过外部表(这里有点新),我怎么能用这个表来实现呢?(考虑到我需要从我开发的函数中获取的所有计算值,尝试触发器(SQL Loader,触发器饱和度?),杀死数据库......)

4

1 回答 1

1

我不知道这样做的方法。

如果您切换到使用外部表,您将有更多的自由来处理这类事情——公用表表达式、利用子查询缓存等。

于 2013-07-05T15:40:44.830 回答