【发布时间】:2017-01-22 17:30:25
【问题描述】:
我不确定这是否可能,但这是我在 sql 加载程序文件中选择表达式的问题。
我有两张桌子。
表 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
任何指针将不胜感激。
【问题讨论】:
-
您是否考虑过加载到临时表,然后运行脚本进行解析,然后使用正确的键插入数据?
-
是的,我可以做到,而且非常简单。但是,我不想在数据库中创建一个新表。
-
我认为单词“EXPRESSION”后面的单双引号是一个印刷错误,或者这可能是错误的原因吗?此外,您可以将此标量查询设为函数。关于函数,在控制文件中调用函数是有据可查的。
标签: sql oracle sql-loader