【问题标题】:Some database sanitzation questions一些数据库清理问题
【发布时间】:2011-11-16 19:55:29
【问题描述】:

我们有一个包含大约 25 万条记录的数据库,我们想要清理这些记录,并且有一些我不知道如何编写的查询:

*清除包含子字符串的单词,例如,如果单词包含子字符串“cache”,则删除整个单词,例如:

"cachelkjdlkjalkjs here happened something" => "here happend something"

*删除包含多于 2 位的行,但少数情况除外,例如:允许 3 位 365。

所以:

"365 days a year, we do that" => Do nothing
"798 is a random number" => DELETE

*检查字数,删除小于X字的记录。

任何帮助将不胜感激。

【问题讨论】:

  • MySQL 在查询中支持正则表达式;这应该让你可以灵活地做你想做的事 - dev.mysql.com/doc/refman/5.1/en/regexp.html
  • @Yobo MySQL 正则表达式无法替换部分字符串。
  • 是的,对于连接到数据库的编程语言来说,这绝对是一个案例。这不仅仅是 mySQL 的工作。

标签: mysql sanitization


【解决方案1】:

先备份数据库!

我会首先列出一个单词列表(以及数字 0...99、365 和您想到的任何其他数字)。然后我会创建一个脚本(你选择的语言)来遍历这些行。对于每一行,检索单词、标点和数字,然后检查以确保它们有效。对于有效的,重建条目并吐出不匹配的位。从不匹配的位中,我只是看一下以确保您没有遗漏任何内容。

我会首先在被动模式下执行此操作(即不要更改数据库),直到您满意一切正常为止。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多