SQL从脏数据集创建新数据库

时间:2014-02-07 02:04:32

标签: php mysql regex database bash

我有一个难题:我正在开发一个内部使用的医疗设备制造商和型号的关系数据库。这些数据的来源(来自FDA的转储)非常脏,并以CSV格式提供,因此它被导入到单个表中,没有相关的密钥开始。
同时,我希望移动将数据导入

  1. 制造商表
  2. 模型表(相对于制造商)
  3. ......由我的应用程序使用

    虽然很容易匹配确切的制造商和型号名称,或通过唯一索引去除特殊字符的制造商和型号名称的字符串,但问题似乎是有很多情况下有名称的后缀和变体,如:

    • 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

1 个答案:

答案 0 :(得分:1)

查看OpenRefine,它旨在进行此类数据规范化/清理。主页上的视频很好地介绍了它的功能。

我上次使用它时,它不是完全可批处理的,但可以将规范化规则序列化为JSON字符串,并使用该字符串在新数据集上重新应用相同的操作。