将csv文件导入oracle数据库

时间:2014-10-03 05:21:07

标签: sql oracle csv

我正在尝试将数据从txt文件导入到表中。 TXT文件有5条记录。 ' ext.txt'是我的档案。' IMPORT'是一个目录。

记录

7499,ALLEN,SALESMAN,30
7521,WARD,SALESMAN,30
7566,JONES,MANAGER,20
7654,MARTIN,SALESMAN,30

我尝试了以下查询,但它只将第三条记录插入外部表。

任何人都可以向我提供插入所有行的此解决方案的原因。

create table ext_tab (
  empno  CHAR(4),
  ename  CHAR(20),
  job1    CHAR(20),
  deptno CHAR(2)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY IMPORT
ACCESS PARAMETERS (
  RECORDS DELIMITED BY NEWLINE
  BADFILE IMPORT:'test.bad' 
  LOGFILE IMPORT:'test.log' 
  FIELDS TERMINATED BY ',' (
    empno char(4) ,   
    ename char(4), 
    job1 CHAR(20),
    deptno CHAR(2)
   )
)
LOCATION (import:'ext.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;

1 个答案:

答案 0 :(得分:0)

这适用于您的给定测试数据

CREATE TABLE ext_tab (
  empno  VARCHAR(4),
  ename  VARCHAR(20),
  job1   VARCHAR(20),
  deptno VARCHAR(2)
)
ORGANIZATION EXTERNAL (
  DEFAULT DIRECTORY import
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE 
    FIELDS TERMINATED BY ','
  )
LOCATION ('ext.txt')
);

假设您已正确设置import目录。

在11.2.0.4上测试

至于上述评论中给出的原因。始终首先检查.bad.log文件(在您放入文件的目录中创建)。这些非常有助于告诉您为什么行被拒绝。

我希望你在日志中有这样的错误: -

KUP-04021: field formatting error for field ENAME                 
KUP-04026: field too long for datatype                            
KUP-04101: record 1 rejected in file /import_dir/ext.txt    
KUP-04021: field formatting error for field ENAME                 
KUP-04026: field too long for datatype                            
KUP-04101: record 3 rejected in file /import_dir/ext.txt    
KUP-04021: field formatting error for field ENAME                 
KUP-04026: field too long for datatype                            
KUP-04101: record 4 rejected in file /import_dir/ext.txt    

并且只导入了WARD,因为只有他的名字符合CHAR(4)