sql loader中select语句的问题

时间:2014-03-11 17:40:56

标签: sql oracle sql-loader

我不确定这是否可行,但这是我在sql loader文件中选择表达式的问题。

我有两张桌子。

表1

IDENTITYNUMBER

ID NUMBER
100 8
200 9

表2

TESTTABLE

NAME ID
John 100  

装载程序sql的数据文件

Jim,8
Carol,9

现在,我想通过将第二个数字替换为第一个表中的id来在测试表中加载此数据。

这就是我的test.ctl文件的样子

load data
append
into table testtable
fields terminated by ',' optionally enclosed by '"'
(
NAME,
ID EXPRESSION "(select i.id from identitynumber i where i.number = :ID)"
)

但我一直收到这个错误: SQL * Loader-291:列ID

的SQL字符串中的无效绑定变量ID

我希望在成功执行加载程序脚本后,表2看起来像这样。

TESTTABLE

    NAME  ID
    John  100 
    Jim   100
    Carol 200

任何指针都将非常感激。

2 个答案:

答案 0 :(得分:3)

没有“表达”

ID“(从身份编号i中选择i.id,其中i.number =:ID)”

答案 1 :(得分:1)

我认为sqlldr EXPRESSION中不允许使用select 功能是:

create function idtestfun(p_num in number) return number
is
  l_num number;
begin
  select id into l_num from identitynumber where "number"= p_num;
  return l_num;
end;

并使用它sqlldr config:

ID "idtestfun(:ID)"