如何在oracle 10g示例中通过sql loader将一个数据文件上传到多个表

问题描述 投票:0回答:1
Create table emp (id varchar2(22), name varchar2(85),hire_date date,department_id varchar2(3));



create table emp_epfo as select id emp_id,name lname,hire_date,department_id dept_id from emp where 1=2;

控制文件

LOAD DATA
INFILE   '/image/ExtTableData/OnlineClaims/member_master.csv'
TRUNCATE
INTO TABLE EMP
FIELDS TERMINATED BY "," 
(ID ,NAME ,
HIRE_DATE ,DEPARTMENT_ID)
INTO TABLE EMP_EPFO
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(EMP_ID,LNAME,HIRE_DATE,DEPT_ID)
sql oracle sql-loader
1个回答
0
投票

您可以使用单个控制文件将数据加载到使用

SQLLDR
的多个表中。你需要记住的是,

 LOAD DATA
    INFILE   '/image/ExtTableData/OnlineClaims/member_master.csv'
    TRUNCATE
    INTO TABLE EMP
    FIELDS TERMINATED BY "," 
TRAILING NULLCOLS
    (ID POSITION(1),
      NAME,
      HIRE_DATE,
      DEPARTMENT_ID
    )
    INTO TABLE EMP_EPFO
    (EMP_ID POSITION(1),
     LNAME,
     HIRE_DATE,
     DEPT_ID
     )

在单独表的列后指定

POSITION(1)
的原因是指示Oracle从第一行开始读取数据。

引用自 Oracle 文档:

不使用POSITION参数时,多个INTO TABLE子句 处理相同(分隔数据)输入记录的不同部分, 允许从一个记录加载多个表。当。。。的时候 使用POSITION参数,多个INTO TABLE子句可以处理 以不同的方式记录相同的记录,允许多种格式 在一个输入文件中识别。

© www.soinside.com 2019 - 2024. All rights reserved.