日期:2014-05-16  浏览次数:20905 次

求救,SQL LOADER如何导入无分隔无固定长度的多行数据
小弟需要使用SQL LOADER导入一文件到ORACLE,该文件每一记录都为不固定的多行,以空行分隔,其中各项数据都是前面加关键字,后面用=或者-带上数据。请问如何将记录中的数据导入数据库的字段,例如将IMSI=460011234567890后面的460011234567890导入到IMSI的字段,将MSISDN=8613012345678后面的8613012345678导入到MSISDN字段,将DBSG-1后面的1导入到DBSG字段,将OBR-2后面的2导入到OBR字段,查了很多资料,只查到可以使用continueif last= ';'将多行合成一条记录,但如何导入关键字后面的数据就不知怎么办,求各位大大请教,文件记录如下:
SQL code

HGSUI:IMSI=460011234567890,MSISDN=8613012345678;
HGSDC:MSISDN=8613012345678,SUD=CAT-10&DBSG-1&OBR-2&TS11-1&TS21-1&TS22-1&RED-5&HPN-1&NAM-0&TSMO-0&SCHAR-0&REDMCH-1&PWD-0000&OFA-1&HOLD-1&CLIP-1&CFU-1&CFB-1&CFNRY-1&CFNRC-1&BAOC-1&BOIC-1&BAIC-1&BICRO-1&SOCFU-0&SOCFB-0&SOCFRY-0&SOCFRC-0&SODCF-0&SOSDCF-7&SOCB-0&SOCLIP-0&SOCLIR-0&SOCOLP-0;
HGSSI:MSISDN=8613012345678,BSG=TS10,SS=BOIC;
HGSSI:MSISDN=8613012345678,BSG=TS10,SS=BICRO;
HGSSI:MSISDN=8613012345678,BSG=TS20,SS=BOIC;
HGSSI:MSISDN=8613012345678,BSG=TS20,SS=BICRO;
HGPDI:MSISDN=8613012345678,PDPID=1,APNID=5,EQOSID=20,PDPTY=IPV4,PDPCH=0;
HGPDI:MSISDN=8613012345678,PDPID=2,APNID=6,EQOSID=20,PDPTY=IPV4,PDPCH=0;
HGPDI:MSISDN=8613012345678,PDPID=3,APNID=12,EQOSID=20,PDPTY=IPV4,PDPCH=0;
HGPDI:MSISDN=8613012345678,PDPID=4,APNID=3,EQOSID=20,PDPTY=IPV4,PDPCH=0;
HGPDI:MSISDN=8613012345678,PDPID=5,APNID=7,EQOSID=20,PDPTY=IPV4,PDPCH=0;
HGPDI:MSISDN=8613012345678,PDPID=6,APNID=13,EQOSID=20,PDPTY=IPV4,PDPCH=0;

HGSUI:IMSI=460011234567891,MSISDN=8613012345679;
HGSDC:MSISDN=8613012345679,SUD=CAT-10&DBSG-1&OBR-2&TS11-1&TS21-1&TS22-1&RED-5&HPN-1&NAM-1&SCHAR-0&REDMCH-1&PWD-0000&OFA-1&CLIP-1&CFU-1&CFB-1&CFNRY-1&CFNRC-1&BAOC-1&BOIC-1&BAIC-1&BICRO-1&SOCFU-0&SOCFB-0&SOCFRY-0&SOCFRC-0&SODCF-0&SOSDCF-7&SOCB-0&SOCLIP-0&SOCLIR-0&SOCOLP-0;
HGSSI:MSISDN=8613012345679,BSG=TS10,SS=BOIC;
HGSSI:MSISDN=8613012345679,BSG=TS10,SS=BICRO;
HGSSI:MSISDN=8613012345679,BSG=TS10,SS=CFB,FNUM=8643110198;
HGSSI:MSISDN=8613012345679,BSG=TS10,SS=CFNRC,FNUM=8643110198;
HGSSI:MSISDN=8613012345679,BSG=TS20,SS=BOIC;
HGSSI:MSISDN=8613012345679,BSG=TS20,SS=BICRO;

HGSUI:IMSI=460011234567892,MSISDN=8613012345670;
HGSDC:MSISDN=8613012345670,SUD=CAT-10&DBSG-1&OBR-2&TS11-1&TS21-1&TS22-1&RED-5&HPN-1&NAM-1&SCHAR-0&REDMCH-1&PWD-0000&OFA-1&HOLD-1&CLIP-1&CFU-1&CFB-1&CFNRY-1&CFNRC-1&BAOC-1&BOIC-1&BAIC-1&BICRO-1&CAW-1&SOCFU-0&SOCFB-0&SOCFRY-0&SOCFRC-0&SODCF-0&SOSDCF-7&SOCB-0&SOCLIP-0&SOCLIR-0&SOCOLP-0;
HGSSI:MSISDN=8613012345670,BSG=TS10,SS=BOIC;
HGSSI:MSISDN=8613012345670,BSG=TS10,SS=BICRO;
HGSSI:MSISDN=8613012345670,BSG=TS20,SS=BOIC;
HGSSI:MSISDN=8613012345670,BSG=TS20,SS=BICRO;



------解决方案--------------------
可以用UEdit把这些SQL整理出有规律的文本文件,再用sqlldr进行导入就可以。
------解决方案--------------------
如果没有规律肯定是无法处理的。你或者吧他按一个字段全部倒入。然后用SQL语句慢慢的整理吧。没有规律的数据肯定是要花费时间整理的。
------解决方案--------------------
探讨
谢谢回复,尝试用UE编辑过,发现不是很好整理,而且有几百万条记录,上面显示的是三条记录,每个记录是不固定行的。我在想能不能使用类似INSTR的函数来搜索记录是否存在某关键字?