2012-07-12 34 views
2

我正在使用oracle 11g中的sqlldr(sql loader)。 我想将3个字段连接成一个字段。有没有人做过这个?在sqlldr中连接多个字段

ex: TABLE - “CELLINFO”字段为(mobile_no,service,longitude)。给出的数据是(+ 9198449844,idea,110,25,50),即(mobile_no,service,grad,min,sec)。

但是,当将数据加载到表格中时,我需要将最后3个字段(grad,min,sec)连接到表格的经度字段中。

这里我不能手动编辑,因为我有1000的数据被加载。

我也尝试过使用||,+和concat()....但我无法。

回答

6

CTL可以是:

load data 
append 
into table  cellinfo 
fields terminated by "," 
(
mobile_no, 
service, 
grad BOUNDFILLER, 
min BOUNDFILLER, 
sec BOUNDFILLER, 
latitude ":grad || :min|| :sec" 
) 

suposing cellinfo(mobile_no,服务,纬度)。

一些不错的信息here on orafaq

或者,您也可以修改您的输入:

awk -F"," '{print $1","$2","$3":"$4":"$5}' inputfile > outputfile 
+0

那岂不是'纬度表达 “:毕业||:分||:秒”'? – Benoit 2012-07-12 15:18:30

+0

我的ctls在工作时使用'expression' :),但是在我发布的链接中,我已经看过没有表达式的例子。我没有尝试没有'表达式'。让我们说什么kattashri说。 – 2012-07-13 05:46:05

+0

在我看来,如果你不使用'EXPRESSION',那么你必须在输入数据中有一些字段,你可以在表达式中引用。 – Benoit 2012-07-13 06:40:08