sqlldr:在单个列中加载csv文件的多列
问题描述:
我有一个可包含多列的CSV文件。sqlldr:在单个列中加载csv文件的多列
举例说明记录如下。
3333,Y,ABC
2222,Y,PQR
1111,N,FFF
表有2列
Column 1 (Number), Column 2 (varchar2(4000)).
我想从CSV加载第一场到表中的第一栏和休息到第2栏文件的各个领域如何实现的呢?
答
这是一种方法。
CREATE TABLE myt
(
col1 NUMBER,
col2 VARCHAR2 (200)
);
控制文件:
LOAD DATA
INFILE *
INSERT
INTO TABLE MYT
(
COL1 terminated by ',',
COL2 terminated by '\n' "REPLACE(:COL2,',')"
)
BEGINDATA
3333,Y,ABC
2222,Y,PQR
1111,N,FFF
你的第一列用逗号终止。该行的其余部分被认为是由新行字符终止的单列。如果您想从第二列中删除 逗号,请使用替换功能。
SQL> select * from myt;
COL1 COL2
---------- --------
3333 YABC
2222 YPQR
1111 NFFF
答
为了论证的缘故,下面是另一种方法。使用“吃桃子”的设置,此方法将输入字段定义为BOUNDFILLER,这意味着将它们视为FILLER,但请记住它们以后用作BIND数据。然后使COL2等于输入字段1和2的级联:
LOAD DATA
INFILE *
INSERT
INTO TABLE MYT
fields terminated by ','
trailing nullcols
(
COL1
,INPUTCOL2 BOUNDFILLER
,INPUTCOL3 BOUNDFILLER
,COL2 ":INPUTCOL2||:INPUTCOL3"
)
BEGINDATA
3333,Y,ABC
2222,Y,PQR
1111,N,FFF
您是否真的尝试编写任何代码来完成它? – FodderZone 2014-09-03 19:46:20