在项目中有一批数据要定时导入到数据库中,文本文件的内容如下,
20101020061010|808080123100001|1488015462605121|0001|000000001000|1001|20101020|4007|156|20101020|745147|20101020060855|13776413305|A73E0784555C454927D809A3776952114EFCACA0276C6F8B79FDF55558D316021867784F5E08A8143D6B91ACDFD23AC3975A52C52EFB5CA5FD4744227AA4999513324B043D4521F134A787EBD8C67E5023EC63A7CD2C1920A4E04733C4470F2DE757EE9DEE7F34BAA414901BFBB4419E79787CFFD3254B00A9E6985471C0D3ED
20101020064016|808080123100001|1488015462897029|0001|000000001000|1001|20101020|4007|156|20101020|745412|20101020063917|13776413305|8C28C569D19DF848216A8FE00EE5E029F3EC13E5018BDBD0F1CA1C1B80975EE1318E07851516583A894F4D07CF8696FF7E1098ADBBC85E8083E2C99361D476693986F4031A3C9FC9010CF0A34C2CD15551A46D1409DCE365B4FAAFD24DA6073C842865F3B4BBA8DA4F2A0C106F7B618DC9CC5117CAE69099801B226535363C6A
这些数据以“|”分隔开,一个文件差不多有6千条数据。。
决定用oracle 的 Load搞定他。。
首先建一个.ctl 控制文件
然后在文件里面输入
OPTIONS (skip=1)
load data
INFILE 'E:\808080123100001_20101020_20101021042834.txt'
append into table account_of_check
FIELDS TERMINATED BY '|'
trailing nullcols
(
Chinapaydate,
MerId,
Ordid,
TransType,
Transamt,
Transstat,
Transdate,
GateId,
Curid,
cpDate,
Cpseqid,
longname1,
telno,
checkValue char(256),
FILLER_1 FILLER,
accountchid "SEQ_account_of_check.nextVal"
)
由于我的表中是比文本文档上多了一个主键列(accountchid )我要主键自动增长,所以让sequence给他值,FILLER_1 FILLER这个后面的列不需要从文本上导入的
但要放到最后。。
当导入时始张报
表 ACCOUNT_OF_CHECK 的列 CHECKVALUE 出现错误。
数据文件的字段超出最大长度
这个错,搞得很纠结,因为我最后一列就是256个字符,我把字段设成了2000还是报这个错。。
后来经过大神们提醒 加了一个 char(256)
哈哈搞定了。。
最后在doc下输入
sqlldr xwmall/xwmall@10.32.65.42/oradb control =E:\Noname1.ctl log=Noname1.log;
记住要生成这个日志文件,方便你调试