Tag: 数据库

迭代大型外部postgres db,操作行,将输出写入rails postgres db

我有一个postgres DB,大约有200,000,000行和6列。 列具有int,date和string,但没有主键,也没有基于主键的唯一值。 此DB中的记录包含我的一个rails postgres模型所需的原始数据。 我想迭代完整的外部数据库,对其每一行执行计算,然后将输出写入我的rails模型。 我没有问题连接到数据库或通过ActiveRecord访问记录,但我尝试迭代数据库的所有内容都失败或耗时太长。 我尝试过以下方法: ExternalDB.all.each ExternalDB.find_all.each 使用这些说明向ExternalDB添加“id”列 我认为答案是使用SQL进行迭代,但我甚至不确定如何开始。

我应该如何为此订单情况设置数据库表

我正在为一家印刷公司构建一个Web应用程序,并试图确定我的数据库的最佳设计。 我有一张orders表。 每个order都有很多certificate。 但是,有两种不同的certificate:电子certificate和物理certificate。 此外,如果它是电子证据,我需要存储图像源,如果它是物理证据,我需要存储跟踪号码。 每个证据都有很多与之相关的评论。 如果我可以只有一个proofs表和一个comments表,那将是很好的,但根据proofs样类型跟踪图像源和跟踪号码的最佳方法是什么? 我考虑过为electronic_proofs和physical_proofs创建单独的表,但这需要制作一个单独的electronic_proof_comments表和physical_proof_comments表。 另一种选择是拥有一个proofs表,在这种情况下我可以有一个comments表。 但是,正如我所看到的,这将需要三个支持表, proof_types , image_sources和tracking_numbers 。 有关最佳方式的想法,还是解决这个问题的更好方法?

是否可以将数据库索引添加到已有数据的数据库中?

我的生产数据库中已有一些数据。 如果我在几个字段上添加一些数据库索引,那有问题吗? Rails 2.3.5,Ruby 1.8.7,sqlite3数据库

Ruby on Rails 5.0升级与迁移用户表冲突

从4.2升级到Rails 5.0后,我收到以下错误: rails db:migrate == 20160703164716 AddDeviseToUsers: migrating ================================= — change_table(:users) rails aborted! StandardError: An error has occurred, this and all later migrations canceled: PG::DuplicateColumn: ERROR: column “email” of relation “users” already exists : ALTER TABLE “users” ADD “email” character varying DEFAULT ” NOT NULL /Users/my_username/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `async_exec’ /Users/my_username/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `block in execute’ 阅读以下两个Stack Overflowpost后: PGError:错误:关系“用户”的列“电子邮件”已存在 在现有模型上设计迁移 […]

Rails – 可扩展的计算模型

我目前在我的rails应用程序中有一个计算结构,它具有模型metric , operand和operation_type 。 目前, metric模型具有许多operands ,并且可以基于operation_type (例如,sum,multiply等)执行计算,并且每个operand被定义为向右或向左(即,如果操作是除法,则分子和可以确定分母)。 目前,操作数始终是某个模型的属性,例如@customer.sales.selling_price.sum 。 为了使这种可伸缩性,需要允许操作数是某种属性,或者是先前操作的结果,即操作数可以是度量。 我已经包含了我的模型当前外观的图表: 任何人都可以帮助我以最优雅的方式允许操作数成为实际操作数或其他指标吗? 谢谢! 编辑:似乎基于迄今为止唯一的答案,也许多态关联是这样做的方式,但答案是如此简短我不知道如何以这种方式使用它们 – 任何人都可以详细说明吗? 编辑2:好的,我想我已经到了某个地方 – 基本上我目前有一个度量标准,其中包含多个操作数,以及一个操作数has_many指标。 我需要一个多态自联接,其中度量也可以有许多度量 – 我是否需要将其称为其他东西,也许是calculate_metrics,以便度量模型可以自己使用? 这将使我的情况是指标具有多个操作数,而指标具有许多calculated_metrics。 编辑3:我已经更新了我的模型如下,并且对于这是否是解决问题的好方法有任何批评。 您将注意到我添加了一个名为calculated_metric的模型,该模型本质上是其他度量的持有者 – 即可以使用两个操作数或操作数和calculated_metric的组合来计算度量。 编辑4:Bounty为任何可以向我展示详细的轨道方式的人添加了。 编辑5:赏金仍在争夺中; 虽然下面提供的答案是详细的,但我正在寻找最好的方法,而不是替代方法来处理这个问题(即请让我知道解决问题的最佳方法,而不是寻找方法来回避它,因为我需要这个function)。 谢谢! 编辑6:对此没有太多关注 – 是否会增加赏金帮助,或者这个问题不是跑步者?

使用带有多个数据库表语句的`INNER JOIN`时意味着什么?

我正在使用Ruby on Rails 3.2.2和MySQL。 我有一个生成以下SLQ查询的方法( has_many :through ActiveRecord::Associations ): SELECT DISTINCT `articles`.* FROM `articles` INNER JOIN `articles_comments_associations` `comment_associations_articles` ON `comment_associations_articles`.`article_id` = `articles`.`id` INNER JOIN `articles_comments_associations` ON `articles`.`id` = `articles_comments_associations`.`article_id` WHERE `articles_comments_associations`.`comment_id` = 223 AND (articles_comments_associations.user_id IN (2)) 我想理解INNER JOIN ‘articles_comments_associations’ ‘comment_associations_articles’ ( 注意 : INNER JOIN有多个数据库表语句)以及SQL查询如何工作,因为我没有名为comment_associations_articles的数据库表 。 这是一个错误 (即使它按预期工作) ?

在rails数据库中更改列名。

我有这张桌子 class CreateEvents < ActiveRecord::Migration def self.up create_table :events do |t| t.integer :subcategory t.string :event_name t.text :description t.string :location t.date :date t.decimal :price t.timestamps end end def self.down drop_table :events end end 我想将子类别更改为subcategory_id。 我尝试了这个,但没有工作 ruby脚本/生成迁移RenameDatabaseColumn然后我去了db \ migrate中编辑的文件,看起来像这样 class RenameDatabaseColumn < ActiveRecord::Migration def self.up rename_column :events, :subgategory, :subgategory_id end def self.down # rename back if you […]

MySQL + Rails:错误:150“外键约束不正确”

我试图迁移我的Rails MySQL数据库,我收到以下错误: ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法创建表development 。 comments (错误:150“外键约束形成错误”):CREATE TABLE comments ( id int AUTO_INCREMENT PRIMARY KEY, comment varchar(255), user_id int, post_id int, created_at datetime NOT NULL, updated_at datetime NOT NULL,INDEX index_comments_on_user_id ( user_id ),INDEX index_comments_on_post_id ( post_id ),CONSTRAINT fk_rails_03de2dc08c FOREIGN KEY( user_id )REFERENCES users ( id ),CONSTRAINT fk_rails_2fd19c0db7 FOREIGN KEY( post_id )REFERENCES posts […]

Rails has_many错误 – 无法找到ID

我有一个评论和回复。 评论has_many回复 的routes.rb resources :comments do resources :replies end 当我打开评论/索引然后选择评论/显示我打印有关该评论的所有回复的信息。 我也可以创建另一个回复。 这一切都正常。 当我决定编辑其中一个回复时出现问题。 奇怪的是,如果有一个ID与我想要修改的回复ID相同,则编辑工作正常。 甚至不需要我想修改的特定回复属于该评论。 但是如果我想编辑带有ID的回复,例如66,但是没有id为66的注释,我收到一个错误: Couldn’t find Comment with ‘id’=65 这是回复/ _form.html.erb,它显然也可以作为编辑表单。 在这种情况下,reply.id为65,它正在查找具有相同ID的注释,该注释不存在。

将一个大表分成多个表

rails app,我有一个表,数据已经有数亿条记录,我要将表拆分为多个表,这样可以加快读写速度。 我找到了这个gem章鱼 ,但他是一个主/从,我只是想拆分大桌子。 或者当桌子太大时我该怎么办?