sqlldr:在单个列中加载csv文件的多个列

时间:2014-09-03 19:06:23

标签: sql oracle csv sql-loader

我有一个CSV文件,可以包含多个列。

举例说明记录如下。

3333,Y,ABC
2222,Y,PQR
1111,N,FFF

该表有2列

Column 1 (Number), Column 2 (varchar2(4000)).

我想将CSV中的第一个字段加载到表格的第1列,并将文件的所有字段放入第2列。如何实现?

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