我有一个固定长度的平面文件输入文件。记录看起来像这样
40000003858172870114823 0010087192017092762756014202METFORMIN HCL ER 500 MG 0000001200000300900000093E00000009E00000000 {0000001 {00000104 {JOHN DOE 196907161423171289 2174558M2A2 000 XXXX YYYYY千亿000020170915001 00010000300 000003zzzzzz 000 {000000000 {000000894 {aaaaaaaaaaaaaaa P2017092700000000 {00000000 {00000000 {00000000 {0000000 {00000 {F89863 682004R0900001011B2017101109656 500 MG 20170101亿{88044828665760
如果你在JOHN DOE之前看,你会看到一个代表金钱领域的领域。它看起来像00000104 {。
这看起来像我多年前从大型机处理的字段类型。我如何在SSIS中处理这个问题。如果{最后实际上是0,那么我希望该字段是一个读取0000010.40的字符串。
我有其他的金钱领域,例如00000159E。如果我的记忆正确地为我服务,那将是00000015.95。
我找不到有关如何进行此转换的任何内容。
谢谢,
迪克罗森伯格答案 0 :(得分:0)
我认为您需要在数据流中使用脚本组件源,或使用派生列转换或脚本组件转换。我建议使用脚本组件,因为听起来你的自定义逻辑会相当复杂。
我已经写了一些关于如何实现脚本组件源的详细解答:
SSIS import a Flat File to SQL with the first row as header and last row as a total
基本上,您需要找到字符串,例如" 00000104 {",然后在将其添加到数据流之前将其转换为十进制/货币形式(或者如果您在&#39期间将其转换为;重新使用派生列转换。)
这也可以在脚本组件转换中完成,它将以类似于派生列转换的方式运行,只有你可能有更复杂逻辑的范围。同样在脚本组件转换中(与源相反),您已经从平面文件源中获得了所有其他字段。
答案 1 :(得分:0)
00000159E 00000104 {
替换(更换(COL, “E”, “5”), “{”, “0”)
(DT_CY)(drvCol)/ 100