2014-09-03 5 views
1

여러 열을 포함 할 수있는 CSV 파일이 있습니다.sqlldr : 하나의 열에 csv 파일의 여러 열을로드하십시오.

예를 들면 다음과 같습니다.

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

표는 2 열

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

내가 어떻게 그것을 달성하기 위해 테이블의 열 1로 CSV에서 첫번째 필드를로드하고 열 2로 파일의 모든 필드를 휴식을 원하는있다?

+0

실제로 코드 작성을 시도 했습니까? – FodderZone

답변

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 
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 
관련 문제