如何使用select查询在Oracle中插入控制文件?

时间:2009-08-12 11:33:10

标签: oracle oracle10g

我有一个控制文件和一个如下所示的数据文件:

CONTROLFILE1:

RECOVERABLE 
LOAD DATA 

INFILE "D:\KING\DATAFILE.txt"

APPEND 
CONCATENATE 1

INTO TABLE TABLE1 
FIELDS TERMINATED BY ','
TRAILING NULLCOLS

(
USERID CHAR(7),
COUNTRY CHAR(100),
FIRSTNAME EXPRESSION "SELECT USERNAME FROM USER_TABLE WHERE ID=3",
ACTIVE_FLAG CONSTANT 'Y',
CHANGE_DT SYSDATE ,
)

DATAFILE.TXT

1,INDIA
5,USA
19,RUSSIA

我无法将数据加载到TABLE1中。 它显示错误"FIRSTNAME" (Expression missing..)

我需要使用select query的结果作为插入值。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

用括号括起查询为我修复了这个错误:

FIRSTNAME EXPRESSION "(SELECT USERNAME FROM USER_TABLE WHERE ID=3)"

我认为这是因为要成为表达式,必须将其视为子查询。

答案 1 :(得分:-1)

我不明白你打算做什么。

您是否尝试将一个函数嵌套到另一个函数中?

然而,我觉得你应该把你的步骤分成一步(重新:“我需要使用select查询的结果作为插入值。”)

也许您可以使用此功能解决您的问题:GenID

使用GenID,您可以在下一步之前生成下一个ID。