Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql中组织更改字段值_Php_Mysql_Perl - Fatal编程技术网

Php 在mysql中组织更改字段值

Php 在mysql中组织更改字段值,php,mysql,perl,Php,Mysql,Perl,我需要对数据库中的一列进行排序,该列是我的分类结构该列中的数据是城市名称,但并非每个城市的所有名称都相同,我需要做的是遍历列中的值,我可能有20-40个值,它们是相同的城市,但写的不同。我需要一个脚本,可以解释它们,并将它们更改为单个值 所以我可能在城市栏中有两个值,分别是:(英格兰>伦敦)和(西伦敦),但我需要换成伦敦,是否有一个脚本能够解释已经存在的值并将其更改为值?我想知道一个接一个地执行此操作的困难方法,但我想知道是否有任何语言的脚本可以完成此操作。只是一个想法:16K并不重要。首先使用

我需要对数据库中的一列进行排序,该列是我的分类结构该列中的数据是城市名称,但并非每个城市的所有名称都相同,我需要做的是遍历列中的值,我可能有20-40个值,它们是相同的城市,但写的不同。我需要一个脚本,可以解释它们,并将它们更改为单个值


所以我可能在城市栏中有两个值,分别是:(英格兰>伦敦)和(西伦敦),但我需要换成伦敦,是否有一个脚本能够解释已经存在的值并将其更改为值?我想知道一个接一个地执行此操作的困难方法,但我想知道是否有任何语言的脚本可以完成此操作。

只是一个想法:16K并不重要。首先使用Perl的
DBI
(我假设您将使用Perl)获取该城市列,将其存储在散列中(城市名称作为散列),然后找到适合您需要的算法(性能方面)来迭代散列键,并使用
字符串::Diff
查找匹配的交集(阅读它,它肯定可以帮助您)并将其存储为一个值。然后您可以使用它来更新数据库,使用键(旧值)并将该值作为要更新的新值。

我已经多次进行此类数据清理,恐怕没有什么比编写自己的修复更简单的了

我可以推荐的一件事是使流程可重复。使用类似(rulenum、pattern、new_值)的替换表。然后,处理表中相关位的副本,以便重新运行整个脚本

然后,你可以从明显的匹配开始(看看什么看起来似乎合理),然后转移到更模糊的匹配。最终,你将有50个不匹配项,你可以手动修补这些项

使其可重复是很重要的,因为在最初的几次尝试中,您肯定会发现不匹配

比如(语法未测试):


我认为你运气不好。你所能做的就是像通配符一样查找“%LONDON%”,但是没有办法编写代码来确定应该映射到哪里,除非你事先弄清楚。我不太确定为什么有人否决了你,我认为这是一个好问题,所以我将你调回0。我想知道是否有有一个程序可以做到这一点…我想我可能不太走运我到处都在搜索我以为有人会在我拥有16000多个类别之前遇到这个问题那不包括重复/变化
CREATE TABLE matches (rule_num int PRIMARY KEY, pattern text, new_value text)

CREATE TABLE cityfix AS 
SELECT id, city AS old_city, '' AS new_city, 0 AS match_num FROM locations;

UPDATE c SET c.new_city = m.new_value, c.match_num = m.rule_num 
FROM cityfix AS c JOIN matches m ON c.old_city LIKE m.pattern 
WHERE c.match_num = 0;

-- Review results, add new patterns to rule_num, repeat UPDATE
-- If you need to you can drop table cityfix and repeat it.