一种特殊文本格式的输入

本文介绍了一种特殊的CSV文件格式,该格式用于保存具有主外键关系的数据,并提供了使用PDI进行数据拆分的方法。通过添加标识列来记录表间的主外键关系,利用文本文件输入、javascript等步骤实现数据的有效拆分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

"1"|"99A1026164***01"|"1"|"张学友"|"香港市"|"200063"|"张学友"|"个人"|"00****72"|"99A102616400"|"xx证券"|"66800000030005119"|"身份证"|"313705197310******"|"133****0369"|""|""|""|"寄送"|""|""|""|""|""|""|""|"20080129"|"20080129"|""|"20080125"|"20080131"|"20080124"|"20080130"|"对账单"|"20080130"|"20080131"|"正常"
"2"|"519008"|"xx证券"|"前收费"|"现金分红"|"10,143.96"|"0.00"|"10,143.96"|"4.7851"|"4.7094"|"48,539.86"|"47,771.97"|"xx证券"|"xx证券"|"普通基金"|""|"0.00"|"0.00"|"20080130"|"20080131"|"0"|"0"
"3"|"20080128"|"9900145307"|"66800000030005119"|"50,000.00"|"0.00"|"20080129"|"0801296680000005267"|"申购"|"519008"|"xx证券"|"前收费"|"50,000.00"|"10,143.96"|"738.92"|"4.8562"|"xx证券"|"xx证券"|"0.00"|""|"0000"|""|"0.00"
"4"|"1"


"1"|"99A1055582***02"|"1"|"戴军"|"香港市"|"200001"|"戴军"|"个人"|"00****32"|"99A105558261"|"xx银行"|"0019363657"|"身份证"|"313101198708******"|"63524722"|"136****6571"|""|""|"寄送"|""|""|""|""|""|""|""|"20080125"|"20080125"|""|"20080125"|"20080131"|"20080124"|"20080130"|"交易对账单"|"20080130"|"20080131"|"正常"
"2"|"519068"|"xx证券"|"前收费"|"现金分红"|"1,277.02"|"0.00"|"1,277.02"|"1.4661"|"1.4400"|"1,872.24"|"1,838.91"|"xx银行"|"xx银行"|"普通基金"|""|"0.00"|"0.00"|"20080130"|"20080131"|"0"|"0"
"3"|"20080124"|"9900056752"|"0019363657"|"2,000.00"|"0.00"|"20080125"|"0801250180000093180"|"定期定额申购"|"519068"|"xx证券"|"前收费"|"2,000.00"|"1,277.02"|"29.56"|"1.5430"|"xx银行"|"xx银行"|"0.00"|""|"0000"|""|"0.00"
"4"|"1"


"1"|"99A1083795***03"|"1"|"叶倩文"|"香港市"|"200063"|"叶倩文"|"个人"|"00***74"|"99A108379577"|"xx证券"|"66800000030005111"|"身份证"|"313705199405******"|"132****0369"|""|""|""|"寄送"|""|""|""|""|""|""|""|"20080129"|"20080129"|""|"20080125"|"20080131"|"20080124"|"20080130"|"交易对账单"|"20080130"|"20080131"|"正常"
"2"|"519008"|"xx证券"|"前收费"|"红利转投"|"20,287.91"|"0.00"|"20,287.91"|"4.7851"|"4.7094"|"97,079.68"|"95,543.88"|"xx证券"|"xx证券"|"普通基金"|""|"0.00"|"0.00"|"20080130"|"20080131"|"0"|"0"
"3"|"20080128"|"9900145291"|"66800000030005111"|"100,000.00"|"0.00"|"20080129"|"0801296680000005266"|"申购"|"519008"|"xx证券"|"前收费"|"100,000.00"|"20,287.91"|"1,477.83"|"4.8562"|"xx证券"|"xx证券"|"0.00"|""|"0000"|""|"0.00"
"3"|"20080128"|"9900145334"|"66800000030005111"|"0.00"|"0.00"|"20080129"|"0801296680000005271"|"设置红利转投"|"519008"|"xx证券"|"前收费"|"0.00"|"0.00"|"0.00"|"0.0000"|"xx证券"|"xx证券"|"0.00"|""|"0000"|""|"0.00"
"4"|"1"

[@more@]

这种格式是一些证券或基金公司的数据导出成 csv 后的格式.这种格式实际上是将多个有参照关系的表里的数据保存到一个文件里,现在需要将某个表或所有表的数据从这个文件里拆分出来.
在这个文件里,每一组数据(每1,2,3,4是一组)是有参照关系的一组数据,1对应主键表只能有一行,2,3,4对应外键表分别可以有多行,实际是一对多的主外键关系.
可以使用 PDI的 "文本文件输入" 步骤, "javascript" 步骤, "过滤"或"switch" 步骤来实现拆分.



参考转换图如下

特殊文本格式转换图
-------javascript begin ---------------------
var id = 0;


if (java.lang.System.getProperty("line") == null)
id= new java.lang.Integer(1) ;
else
id = new java.lang.Integer(java.lang.System.getProperty("line"));


if (Field1.getString().equals("1"))
id = i.intValue()+1;


java.lang.System.setProperty("line",id);
---javascript end ---------------------

id 是新增加的一列,记录了表之间的主外键关系, 对于表1,id 是主键列,对于其他表 id 是外键列.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14366449/viewspace-1009258/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14366449/viewspace-1009258/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值