mysql - 查找 Not Null 并将这些字段替换为虚拟数据(大型数据库)
问题描述
需要从表中查找非空字段并将这些字段替换为大型数据库的虚拟数据。我写了一些参考代码。谁能帮我?提前致谢。
需要执行 10 多个包含大量数据的表。每个字段用不同的虚拟数据不一样。即使使用mysql的解决方案也对我有帮助
Address.where.not(encrypted_address: nil).each do |address|
address.update_attribute(:address, Faker::Address.street_address)
end
解决方案
- 将您的操作包装在事务中
ActiveRecord::Base.transaction
- 使用批量加载数据
find_each
- 仅加载要修改的列
select
Address.transaction do
Address.where.not(encrypted_address: [nil, '']).select(:address).find_each do |address|
address.update_attribute(:address, Faker::Address.street_address)
end
end
如果不需要调用验证或者回调,可以考虑使用update_column
overupdate_attribute
理想情况下,Rails 不是为大型数据集更新而构建的。您应该考虑一些本机数据库实用程序。
推荐阅读
- json - JSON 模式条件语句
- html - 如何在带有边框图像和阴影的html5画布上显示完整图像?
- javascript - 如何首先呈现搜索项目和所有匹配项目 JavaScript?
- android - API> 25 中的前台服务在应用程序运行时是否需要通知(可见)
- html - 在网页的一行中打印两个不同的东西
- python - 如何在不使用python循环的情况下获得循环?
- mysql - 如何在 mysql 中搜索嵌套的 json 查询?
- django - Django 搜索查询功能,如 Django admin 或 Django rest 框架
- python-3.x - 如何设置用户可以使用 Kivy DragBehavior 拖动项目的区域?
- java - Java 8 增强的带有索引/范围的 for 循环