您的位置:首页 > 数据库 > Oracle

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

2012-11-14 16:40 148 查看
将文本文件中的数据导入到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
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: