我有一个CSV文件,可以包含多个列。
举例说明记录如下。
3333,Y,ABC
2222,Y,PQR
1111,N,FFF
该表有2列
Column 1 (Number), Column 2 (varchar2(4000)).
我想将CSV中的第一个字段加载到表格的第1列,并将文件的所有字段放入第2列。如何实现?
答案 0 :(得分:0)
这是一种方法。
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
答案 1 :(得分:0)
为了论证,这是另一种方法。使用“Eat A Peach”的设置,此方法将输入字段定义为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