我有一个难题:我正在开发一个关系数据库的制造商和医疗设备模型,以供内部使用。此数据的来源(来自FDA的转储)非常脏,并且在CSV中提供,因此将其导入到一个表格中,而没有相关的键。
同时,我希望移动将数据导入到
- 制造商表
- 模型表(相对于制造商)
...要由我的应用程序使用
虽然很容易匹配确切的制造商和型号名称,或者通过唯一索引剥夺了特殊字符的制造商和模型名称,但问题似乎是有很多情况是,名称有后缀和变化,例如:
- st judes
- ST Judes,Inc
- st judes -neuro
- ST Judes Inc Cardio
- Saint Judes International
理想情况下,所有这些都应是1个制造商记录,一旦从CSV导入表移到了我为内部使用而开发的表结构。
三个也将是每周下载新的CSV,导入CSV表并更新内部表结构的每周批处理作业。
我最初的想法是使用Soundex值或干净字符串的唯一索引,但是在上面的示例中都没有工作。
关于我如何实现这一目标的任何建议?我熟悉Bash,SQL,PHP和一些Python。这是肮脏的CSV的很小的片段。使用所有CSV,大约是30m记录
http://www.accessdata.fda.gov/maude/ftparea/foidev2013.zip
查看OpenRefine,旨在执行此类数据归一化/清洁。主页上的视频在介绍其功能方面做得很好。
我上次使用它并不完全批处理,但是可以将标准化规则序列化为JSON字符串,并使用该字符串在新数据集上重新启用相同的操作。