西西河

主题:请教一个关于数据格式转换的问题 -- 凉风起天末

共:💬18 🌺8 新:
分页树展主题 · 全看 下页
  • 家园 请教一个关于数据格式转换的问题

    这可能在各位技术大牛眼里不是一个大问题,不过相当困扰我。

    我设计了一个数据库系统,主要用来管理ODM供应商的供应链运作情况,包括物料需求和供应,订单执行,生产排程,物流运输等信息。设计思想的初衷是能够尽可能方便的整合整个供应链条上相关数据,然后在此基础上做下一步数据挖掘和一些其他的管理应用。现在的这些数据的传递主要是通过邮件的方式手工传递,而且信息很分散,要了解一些业务情况往往要整合多项数据源下的信息,效率和准确率都让人头疼。

    一个背景是ODM供应商不支持直接把他们的ERP系统和我们的系统直接对接,主要出于商业保密的考虑。我们的做法是设计了一个SQL SERVER数据库做为中间平台,由相关数据责任人用EXCEL上传数据或者直接在邮件系统里抓去现成的报表(也是EXCEL格式)从中抽取需要的数据。

    现在数据库已经上线,在一个供应商那里运行了一段时间。 基本上实现了设计的功能,但是我发现上传数据的格式总是多多少少有些问题, 因为为了符合数据库对数据格式的统一需求,我们不的不要求很多数据的责任人更改他们原来的数据书写方式。相关的沟通和培训都到位了,但是我发现数据输入的质量始终在波动。我不的不放一个人在这里监控数据质量,以应付现在的业务。

    考虑到要将这个数据库的范围扩大到所有供应商 (10几个), 数据格式的问题让我很担心。我不想以后花人力在数据格式的整理上,希望能够有个足够聪明的办法来统一数据格式。我相信一定有这样的办法,但是我在这行的经验实在太少,另,如果能用VB或者SQL的语言实现就非常理想了。

    恭请大家的意见,先谢过了。

    • 家园 能否采用XML格式?

      很久没有做开发了,乱掺和一把。

      供应商的ERP支持哪些格式的数据导出?假设支持csv格式导出,可以考虑写一个该格式转换成xml格式的数据接口,这种接口很好写。可能要针对不同供应商写多个数据接口。

      • 家园 供应商那边的系统比较弱

        要人手整合不同系统的数据。他们也不同意我们直接连接他们的系统。

    • 家园 你的需求我一直没看明白

      上传数据的格式总是多多少少有些问题

      到底是啥格式问题呢:

      不会是你要求上传小数点后两位数字,人家给你1e+6这样的吧?

      如果你要的数字,上传的数字里面带XYZ,那是啥办法都没有,这是管理问题了。除非你能把这个列入考核,让他的上级去压他。

      你要三列数据,人家给你2列,也是一样没办法

      你不想麻烦人家改,又安排专人做,那么把那个人做的重复性工作改为计算机完成就好了。这种具体怎么做,都是很详细很琐碎的具体实现技术了,应该有更专业的论坛可以咨询,你也没这么提需求

      总之我觉得你的需求很不清晰

      • 家园 是这样

        现在的碰到的问题不是大问题, 我们自己修修补补一下还能应付得了。

        我的想法是当这个数据库在一个更大范围里应用的时候, 担心因为不同的使用者的习惯会对数据格式有影响。所以在想是否能有类似中间件之类的东西能够整合多类型数据的输入,然后输出一个标准化的格式, 比方说我们现在的设计是将多批次到料的信息设定为 :2011/06/15@1000;这种格式,我希望系统能够辨认不同的日期输入格式, 自动剔除非法字符,等等,是一个强制统一数据格式的功能。

        希望这样说清楚了。

    • 家园 本人做软件开发,提供一点建议

      方案一:改进你们系统的数据上传功能,做一个web页面或者winform界面来实现数据导入。导入之前,你们的系统先根据规则校验供应商提供的数据文件(xls、txt等等)格式是否正确,如果正确无误,就执行后续的导入步骤。如果在校验中发现错误,就在界面上提示哪些行、哪些列的数据格式不正确,提醒供应商进行纠正。

      这个方案的优点是供应商必须提供格式正确的数据文件,否则将无法上传;缺点是要修改你们现在已经上线运行的系统。

      方案二:单独开发一个数据格式检查的小工具提供给供应商,要求他们上传数据文件之前必须对数据文件用工具进行检查,如果检查发现错误必须修正之后才能上传。

      这个方案的优缺点和方案一正好相反。

      • 家园 谢谢, 您这是正规军的打法

        我其实两种方案都考虑过。这其实是用技术限制来强迫数据责任人统一数据格式。第一种方案控制不了邮件里的数据, 第二种方案提的工具我们也开发了,但供应商那边的员工不太乐意用,本来她们都是在超负荷工作,逼得太紧效果也不好,所以才有的这个在后端技术上解决的想法。

        我个人感觉设计开发这个系统本身到没什么,规范一大票人的行为习惯就比较痛苦。尤其是行为人的付出不能直接看到收益的时候,所有做的事情对她们来说就是没有价值的附加工作量,很难得到她们的全力配合。

        有些资料说像ERP,CRM之类的大型信息系统顺利上线的成功率不到50%,排名第一的原因就是流程改造不到位。但件事情得两说, 另一面恐怕也的说这些系统设计的是有些脆弱性吧。

    • 家园 如果是sql,用SQL自带的SSIS做转换

      要求供应商提供EXCEL格式,或者手动做成EXCEL格式,然后使用自带的SSIS做数据转换。并且对于SSIS来说,对后期的数据仓库和分析也有用。当然,这些都是对有规则的数据格式,对于没规则的,程序应当很难解决掉了

      • 家园 谢谢谢谢, 这个是就是我的想法

        这些数据是有规则的,当然不同产品,不同供应商之间有些细微不同。

        您能在说详细点么,能有些具体做法之类的就非常理想。

        • 家园 既然总是用Excel,干脆开发一个Excel插件好了

          用于检查数据格式,然后放到模板里,不同的公司用不同的模板,同一公司不同部门也可以用不同模板。最好做成传送数据的时候自动检查。

          说白了就是把C/S或B/S界面直接做到Excel里,因为Excel本身也可以看成是一个开发平台,尤其是部署了Excel服务器后。

        • 家园 具体做法可以参考ETL的过程

          看了上面的回复,感觉重点在MAIL数据的处理,这块如果没有一个相对应的格式的话,什么样的转换也无法做了。

    • 家园 做一个B/S或C/S客户端来输入和验证数据不就得了。

      你的情况,B/S系统好的。

      • 家园 谢谢, 不过有些数据是程序从邮件里抓的附件

        这种来源的数据B/S或者C/S怎么控制格式呢?

        • 家园 从邮件里抓数据本身就不正规

          邮件里的数据是无法验证和及时反馈的。

          用B/S客户端的意思就是要改革流程,要求统一从客户端输入数据,提交的时候就可以及时验证数据完整性和合法性。B/S好些,就在于用户只需要一个浏览器即可。

          要是你无法要求数据提供方做如此流程更改,恐怕你只好自己手工验证了。

          • 家园 对的,这不是数据库录入数据的正规做法

            我是这样想的哈, 在客户端输数据好处是数据格式可以有效控制,不好的地方是这是一块增加出来的工作量,不增值的流程。从另一个角度上说,也可以说这是数据库受限制的地方。

            我面临的环境是数据源非常的多,大量的数据在被手工传递, 我没有资源去建一个像沃尔玛供应链那样的大一统的数据库覆盖来覆盖所有的主要业务角落,只是在现有业务的基础上实现一定程度的数据集成,所以有的这个想法。如果能有办法先把数据抓过来,再转化成一种中间格式,最后加工成我要的标准数据格式就非常理想。最大的好处是给前端数据责任人很大的自由度,同时不影响后端的数据质量。

            这样的想法的主要考虑是我的主要目的是在数据平台上做下一步的挖掘和应用,不想花太多的时间改变前端的流程,那些协调工作上花得时间和精力太不值得了。

分页树展主题 · 全看 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河