有没有人知道如何处理这种情况
获得了10M的商业名称记录和其中大部分都是脏的并且要清理的地址。
使用带有LIKE&amp ;;的Case语句开始构建函数正则表达式找到模式,我面临的问题是MySQL性能和它非常慢。
函数确实如下:删除多余的空格,非字母数字字符,并使用LIKE标准化名称(几乎有100个模式),我知道它会很慢,但不知道我会尝试哪些其他选项
我正在考虑选择将所有这些关键字保存到具有相应更正值的表中,并使用该表作为查找以使用函数替换关键字是否有效?
punctuation (could use REPLACE; not sure it there are more efficient options)
abbreviations (this is the tough one -- street = st, etc.)
Company/Restaurant/other Names standardizing: Like
Universities to Univ, CENTER to CTR, AND to &,
case
when Businnes_name like '%SUBWAY%' then 'SUBWAY'
when Businnes_name like '%MCDONALDS%' then 'MCDONALD''S'
when Businnes_name like '%MCDONALD''S%' then 'MCDONALD''S'
when Businnes_name like '%STARBUCKS%' then 'STARBUCKS'
when Businnes_name like '%DUNKIN%DONUTS%' then 'DUNKIN'' DONUTS'
when Businnes_name like '%BURGER%KING%' then 'BURGER KING'
我在函数中总共有100个关键字,如上述语句
-Thanks
答案 0 :(得分:0)
数据清理最好采用更全面的编程语言,而不是SQL。在过去的生活中,我发现Perl很棒。
首先用几个s{}{}g
命令来清理一些东西。
然后是sub
,有一百行像
return q{MCDONALD'S} if $str =~ m{McDonald's}i;
然后 - 只有 - 将数据存储到数据库中。 (您可以选择为原始列(麦当劳)和专栏形式的列(MCDONALD' S)添加一列。