mysql - 将旧版 v1 数据迁移到 Rails 6 应用程序中的 v2 数据库

标签 mysql ruby-on-rails rake-task

我有一个遗留数据库,我需要将其转换为新数据库以用于 Rails 6 应用程序。遗留数据库有 21 列和 900,000 多行。我只对根据两列的组合提取某些没有重复项的列数据感兴趣。我有名为 depthnameproduct_numbercountry 的列。我想提取 nameproduct_number,但只提取基于 product_numbercountry 组合的唯一行其中 depth 为 1。例如,如果我使用 product_number 11122000 和 country AUS,我有 115 行,但我只想要其中的一行。我想将结果保存到一个变量中,因为我必须将新数据库中的列命名为不同于旧数据库中的列。我已经为其他遗留数据库转换编写了 rake 任务,但我不知道如何提取这些列。我试过这个:

Database.where(depth: 1).group(:product_number, country)

这为我提供了包含产品编号和国家/地区的数组散列。如何从此哈希中提取名称和产品编号?或者是否有更好的方法来拉取所需的行?

最佳答案

问题在于,在关系数据库理论中,如果您group by unique product_numbercountry 可能会有多个结果,它们可能name 有不同的值。所以 SQL 不知道如何为 name 值选择哪一行。

您可能必须在 ruby​​ 中处理它。

Database.where(depth: 1).group(:product_number, :country).map |db|
  Database.where(depth: 1, product_number: db.product_number, country: db.country).first
end

关于mysql - 将旧版 v1 数据迁移到 Rails 6 应用程序中的 v2 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755705/

相关文章:

ruby-on-rails - 如何使用 mailman 处理电子邮件线程

php - 无法将 php 7.2 连接到 mysql 8.0 服务器请求客户端未知的身份验证方法 [caching_sha2_password]

php - 从 mysql 中删除选定的项目

java - CertPathValidatorException Java 尝试使用 SSL 连接到服务器数据库

ruby - 运行所有 rake 任务?

ruby-on-rails-3 - Rake::TestTask 没有运行 minitest 文件

ant - 显示 rakefile 任务的所有描述的命令?

mysql - SQL是否可以组合group、count和distinct?

ruby-on-rails - 如何使用连接表制作多模型 tag_cloud?

javascript - 如何在 Turbolinks 中使用 HTML 初始化 Flickity