文本文件中的数据导入到Oracle数据库表

来源:互联网 发布:月相手表 知乎 编辑:程序博客网 时间:2024/05/22 14:32

将文本文件中的数据导入到Oracle数据库表中,主要操作步骤如下:
1、确认Oracle数据库已经建好了需要导入的数据表结构
2、准备好数据文件syzjgb1.dat,内容如下:
 001|中外合资|
 002|中外合作|
 003|外商独资|
 004|乡镇企业|
 005|国有联营|
 006|集体联营|
 007|其他联营|
 008|股份合作|
 009|外商投资|
 010|事业单位|
 注:固定字段长度的文本文件(每个字段拥有固定的字段长度);有分隔符的文本文件(每个字段都有相同的分隔符分隔)
 数据文件syzjgb2.txt,内容如下:
 001|国有|
 002|集体|
 003|民营|
 004|中外合资|
 005|中外合作|
 006|外商独资|
 007|个体|
 009|乡镇企业|
 010|国有联营|
 011|集体联营|
 012|国有与集体联营|
 013|其他联营|
 014|股份合作|
 015|港澳台商投资|
 016|外商投资|
 017|事业单位|
 008|其他|
 000|未分类|
3、针对数据源文件制作一个控制文件(syzjg1.ctl),控制文件是用来解释如何对源文件进行解析,其中需要包含源文件的数据格式、目标数据库的字段等信息
 sqlldr   用户名/密码@服务名   control=控制文件名.CTL  
    
 load   data                     --1、控制文件标识  
 infile   'test.txt'         --2、要输入的数据文件名为test.txt  
 append   into   table   test    --3、向表test中追加记录  
 fields   terminated   by   X'09'  --4、字段终止于X'09',是一个制表符(TAB)  
 (id,username,password,sj)     --定义列对应顺序  
    
   insert,为缺省方式,在数据装载开始时要求表为空  
   append,在表中追加新记录  
   replace,删除旧记录,替换成新装载的记录  
   truncate,同上
 a、固定长度的文本
 LOAD DATA
 infile 'c:/syzjgb1.dat'
 INSERT INTO TABLE syzjgb
 fields terminated "|"
 trailing nullcols(
   SYZJG POSITION(1:3),
   SYZJG_NAME POSITION(5:12)
 )
 注:POSITION(M:N)表示该字段是从位置M到位置N。
 b、不固定长度的文本
 LOAD DATA
 infile 'syzjgb2.dat'
 INSERT INTO TABLE syzjgb
 fields terminated "|"
 trailing nullcols
 (
   SYZJG,
   SYZJG_NAME
 )
 其中,infile 'c:/syzjgb1.txt'指明所要导入的源文件,其实源文件也可以直接通过命令行来输入获得,
       syzjgb为目标表的名字,
       fields terminated "|"是指源文件的各个字段是以逗号分隔,
       trailing nullcols 表示遇到空字段依然写入到数据库表中,
       SYZJG、SYZJG_NAME字段是目标数据库表的字段结构。
 注意:控制文件需要与源文件的格式信息一致,否则导入数据会出现异常。
4、命令行加载数据
在 Dos 窗口下使用 SQl*Loader 命令实现数据的导入,即使用 Oracle 的 sqlldr 命令进行数据的导入
C:/>sqlldr userid=system/manager@ serviceName control=c:/input.ctl

默认日志文件名为:input.log

默认坏记录文件为:input.bad

如果导入不全,可以查找BAD文件找到原因 

 

 

用SQLLDR导入含日期格式的TABLE

修改控制文件如下:
LOAD DATA
infile 'qyflxxb_v2.dat'
INSERT INTO TABLE qyflxxb_v2
fields terminated by "|"
TRAILING NULLCOLS
 (
  KHH,
  KHMC,
  FLRQ DATE"YYYY-MM-DD",
  JGM,
  FLBH,
  YJFLBH,
  EJFLBH,
  SNYYSR,
  SNMZCZE,
  ZGZS,
  CDB,
  TSKHBZ,
  NDHCBZ,
  XYDJ
)

原创粉丝点击