在SQL/MySQL/PostgreSQL表上执行高级数据清理和格式化的最佳语言/技术是什么?

1 投票
1 回答
799 浏览
提问于 2025-04-17 03:49

我们在Visual FoxPro里有一堆实用的脚本,用来交互式地清理和格式化数据。我们想开始把这些代码迁移到其他数据库平台,比如MySQL或SQLite。

比如,我们有一个脚本,可以把名字和地址的格式调整为正确的大小写。这个代码会遍历整个表,分析并修正每一行数据。还有其他的脚本,可以解析和标准化地址,甚至检测重复数据……

我们在考虑把代码迁移到Python,可能还会用像SQLAlchemy这样的工具作为“中介”。

在Visual FoxPro中,数据库和表是集成在一起的,我们可以直接打开表并运行命令。而MySQL就不一样了,我们需要先从数据库中提取数据,然后对提取的数据进行处理,最后再更新表。

那么,最好的方法是什么呢?

我看到几种可能性:

1) 把需要处理的整个数据集提取出来,比如所有的地址字段,然后更新所有数据并写回去……

2) 分块提取数据集,以避免消耗大量的系统内存……然后更新并写回去。

3) 生成SQL代码,可能借助像SQLAlchemy这样的工具,然后把代码发送给服务器执行……

4) ??? 还有其他我没想到的方法吗?

1 个回答

0

看起来你想一次性做很多事情。能不能一步一步来?比如先用你平常的脚本清理一下现在的数据。然后再把数据库迁移到MySQL。

如果VisualFoxPro可以把数据库导出成CSV格式,那迁移数据库就简单多了。你可以直接把这个CSV文件导入到MySQL,几乎没有什么麻烦。这样你就会有两个功能上完全相同的数据库。当然,你需要证明这两个数据库确实是一样的,这虽然不难,但会花一些时间。你可以考虑用SQLAlchemy来帮忙。

当MySQL数据库准备好后,就是把你的清理脚本转到Python或者其他语言的时候了,确保它们能正常工作。

这就是我处理这个问题的方法:把它分成几个部分,不要在一个步骤中做太多事情。

希望对你有帮助!

撰写回答