(sqlldr)将xx.csv文件导入oracle数据库

1、在数据库中创建表,表的字段要与XX.CSV文件的列数一致。(只是简单的直接导入数据)

 

create table T_ORDER_DETAIL
(
  oid       NUMBER,
  productid NUMBER,
  cnt       NUMBER,
  price     NUMBER(8,2)
);

 

 

 

 

.csv文件样式如图:

(sqlldr)将xx.csv文件导入oracle数据库_第1张图片

 

 

2、编辑控制文件(文件路径:E:\test\data.ctl)

 

options (skip = 1,rows = 128)
LOAD DATA 
INFILE 'E:\test\T_ORDER_DETAIL.csv' 

append
INTO TABLE scott.T_ORDER_DETAIL
fields terminated by ','
Optionally enclosed by '"'
  (
   OID, 
   PRODUCTID, 
   CNT,
   PRICE
   )


因为是.csv文件,此处一定要注意添加上

fields terminated by ','
Optionally enclosed by '"'

这两个参数,否则导入失败。

3、在CMD命令行下执行命令

sqlldr control = 'E:\test\data.ctl' data='E:\test\T_ORDER_DETAIL.csv'

导入成功。

或者记录日志:sqlldr control = 'E:\test\data.ctl' data='E:\test\T_ORDER_DETAIL.csv' log='E:\test\log.log'

 

sqlldr用到的主要参数

用法: SQLLDR keyword=value [,keyword=value,...]


建议直接使用的关键字:
 

    userid     -- ORACLE 用户名/口令
   control -- 控制文件名
       log -- 日志文件名
      data -- 数据文件名

示例:

sqlldr control = 'E:\test\data.ctl' data='E:\test\T_ORDER_DETAIL.csv' log='E:\test\log.log'

命令运行后会自动提示请输入用户名和密码。

 

控制文件的各个参数具体解析如下:

options (skip=1,rows=128)       -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行
                                                        -- rows 默认是64,你可以根据实际指定更合适的 ROWS 参数来指定每次提交记录数。
LOAD DATA  

CHARACTERSET AL32UTF8                         --指定外部文件的字符集,如果数据库是GBK字符集,导入的数据文件是UTF-8,则此处为AL32UTF8 ,如果字符集,导入的文件与数据一致,此处可以省略
INFILE 'E:\test\T_ORDER_DETAIL.csv'               --指定外部数据文件,可以写多个 INFILE "another_data_file.csv" 指定多个数据文件
BADFILE 'E:\test\T_ORDER_DETAIL.bad'          -- BADFILE 来指定坏数据,可以不写
DISCARDFILE 'E:\test\T_ORDER_DETAIL.dis'  --DISCARDFILE 指定丢弃数据的文件,可以不写
APPEND                                                                    --操作类型,可以有insert,append,replace,truncate
INTO TABLE scott.T_ORDER_DETAIL                --目标表 scott.T_ORDER_DETAIL
Fields terminated by ","                                           --导入的数据中每行记录用 "," 分隔,并不是数据库中的数据
Optionally enclosed by '"'                                        -- 导入的数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时
trailing nullcols                                                         --表的字段没有对应的值时允许为空
  (
   OID, 
   PRODUCTID, 
   CNT,
   PRICE
   )
   
说明:在操作类型 truncate 位置可用以下中的一值:


1) insert     --为缺省方式,在数据装载开始时要求表为空
2) append  --在表中追加新记录
3) replace  --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录

 

xx.csv文件在表格里面存储形式为     “ xxx”,“xxxx”,"xxxx"

因此这两个参数添加上

Fields terminated by ","    
Optionally enclosed by '"'  

尤其是在数据库里面为number类型的,否则导入的要么是字符型的,要么导入不成功。

 

你可能感兴趣的:(初学)