첫번째 질문을 여러 CSV를로드하는 방법 : 나는 test1.csv, test2.csv 및 test3.csv표, 표 2 및 표 3에로드하려고 각각 SQLLDR을 사용합니다. 이 영역에 대한 지식이 있다면 .ctl 파일에서이를 정의하는 동안 제대로 이해하지 못했을뿐입니다. 아래 코드는 생각할 수 있지만 올바르지 않습니다. 그래서 내 질문은 내가 어떻게이 권리를 만들 수 있을까 아니면 이것이 가능한가?SQLLDR - multple 테이블에
OPTIONS (SKIP=1)
LOAD DATA
INFILE 'test1.csv'
INFILE 'test2.csv'
INFILE 'test2.csv'
TRUNCATE
INTO TABLE table1
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Col1 "TRIM(:Col1)",
Col2 "TRIM(:Col2)"
)
INTO TABLE table2
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Colx "TRIM(:Colx)",
Coly "TRIM(:Coly)"
)
INTO TABLE table3
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Colp "TRIM(:Colp)",
Colq "TRIM(:Colq)"
)
두 번째 질문 :이 첫 번째 질문의 대안입니다. 처음부터 알아낼 수 없기 때문에, 내가 한 것은 각 테이블의로드를 여러 .ctl 파일로 분할하고 .bat 파일에서이 세 가지를 모두 호출하는 것입니다. 이것은 적어도 작동하지만 내 질문에 사용자/암호를 세 번 언급하지 않고 세션에서 이러한 모든 3 .ctl 파일을 처리 할 수있는 방법은 무엇입니까? 파일의 데이터를 대상으로하는 것이 어떤 테이블 표시 할 수있는 사용할 수있는 필드가있는 경우
sqlldr userid=user/[email protected] control=test1.ctl
sqlldr userid=user/[email protected] control=test2.ctl
sqlldr userid=user/[email protected] control=test3.ctl
데이터가 들어갈 표를 키로 사용할 수있는 표시기 필드가 이미 있거나 추가되어 있습니까? –
데이터를 구분하기 위해 키를 사용하지 않았지만 키를 추가하여 시도해 볼 수 있습니다. – Chito