Tag: postgresql

Rails – 在PostgreSQL中将CSV条目导入为数组

我正在使用Ruby on Rails rake任务将.csv文件导入我的PostgreSQL数据库。 我的代码供参考,如下: require ‘csv’ namespace :db do desc “Populate database” task populate_database: :environment do CSV.foreach(“db.csv”, :headers => true) do |row| Sale.create!(row.to_hash) end end end 在.csv文件中,我有一个格式为“cat; dog; foo; bar”的条目。 现在,这个条目被导入到PostgreSQL中作为“文本”(即数据类型)。 但是,我希望将文本拆分为“;”,并将拆分结果作为文本数组存储在PostgreSQL中。 我该怎么做呢? 编辑澄清: 我的数据看起来像这样: column 1 | column 2 | column 3 row 1 John | Jack; Carol | Seth; Annie; Doug row […]

rails migration:postgresql for md5 of random string as default

Rails 3 + postgresql 我希望有一个随机字符串的sha用于列的默认值。 所以,在我的迁移中,我有: t.string :uniqueid, default: md5(random()::text) 然而,我无法让它实际产生任何东西,我使用了反引号,引号等。 从我看过的例子来看,似乎pg函数只能在SELECT语句中使用。 这是准确的吗? 有关如何实现这一目标的任何想法? 谢谢

Heroku上的“PG ::错误 – 数字字段溢出”

我构建了一个应用程序,用于查询Google Analytics过去7天的数据。 一切都在当地工作。 在Heroku上,该过程运行顺利,直到它试图获取今天的数据。 然后我收到以下错误: 2012-10-29T02:32:02+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR: numeric field overflow 2012-10-29T02:32:02+00:00 app[web.1]: DETAIL: A field with precision 8, scale 2 must round to an absolute value less than 10^6. 我试图弄清楚哪个变量不满意,但我现在还不知道。 我假设它与日期或时间有关。 任何想法或想法都会很棒:) – 更新— ActiveRecord::Schema.define(:version => 20121014153338) do create_table “analytics”, :force => true do |t| t.string “site” t.integer “visits” t.date “start_date” t.date […]

如何在雪豹上安装gempg

我需要在雪豹上安装gem pg,因为我在rails codebase上运行rake。 我没有使用postgres。 这是我得到的错误。 $ sudo gem install pg Password: Sorry, try again. Password: Building native extensions. This could take a while… ERROR: Error installing pg: ERROR: Failed to build gem native extension. 看了谷歌搜索的各种博客,但没有一个工作。

本地postgres db不断给出错误重复键值违反唯一约束

我不明白为什么postgres会提高: duplicate key value violates unique constraint 我去pgadmin检查表,看看表是否真的有重复,看看: 建议运行VACUUM 表上的估计行数与实际行数明显不同。 为什么会这样? 幸运的是,似乎没有在heroku的生产中发生。 这是一个rails应用程序。 更新: 这是sql日志: SQL(2.6ms)INSERT INTO“favorites”(“artist_id”,“author_id”,“created_at”,“post_id”,“updated_at”)VALUES($ 1,$ 2,$ 3,$ 4,$ 5)返回“id”[[“ artist_id“,17],[”author_id“,nil],[”created_at“,太阳,2012年3月18日03:48:37 UTC +00:00],[”post_id“,62],[”updated_at“,Sun ,2012年3月18日03:48:37 UTC +00:00]] PG ::错误:错误:重复键值违反唯一约束“index_favorites_on_artist_id_and_post_id”DETAIL:键(artist_id,post_id)=(17,62)已经存在。 但是在实际的表格中没有这样的记录,其中artist_id = 17和post_id = 62.但是postgres认为存在。

如何使用activerecord和POSTGRES平均产品评论分数

假设我有一张包含100个产品评论的表格。 每个评论都有一个“id”,“product_id”和“得分”。 现在,我想要做的是提供每个产品的平均分数……那么有没有办法使用Rails来查询数据库呢? 我肯定一定有,但我无法弄清楚。 我希望发生以下情况: Toyota Corolla 70% Toyota Camry 78% Toyota Avalon 80% ..显然基于平均每个的多个评论,但以上述方式呈现。 更新: 对于那些对解决方案感兴趣的人 这是在控制器中: @ordered_hash = Review.group(‘aidmodel_id’).average(‘score’) @keys = @ordered_hash.keys @reviews = Review.where(:aidmodel_id=>@keys).uniq_by {|x| x.aidmodel_id} 这是在视图中: @ordered_hash[review.aidmodel_id]行提供具有所需ID的援助模型的平均分数。

如何使用PSequel GUI连接到Mac上的localhost PostgreSQL?

我按照本教程在Mac上安装PG。 这是我第一次在本地使用PG。 在此之前我在Rails项目中使用了很多Sqlite。 我找到了这个PSequel GUI应用程序 ,我刚安装它。 但我不知道如何连接到我的localhost PostgreSQL数据库。 我的是什么: 主机/sockets? 港口? (我使用localhost:3000在本地测试我的Rails应用程序) 用户? 密码? 数据库? 谢谢。

Rails Activerecord Relation:使用子查询作为SQL select语句的表

有人可以帮我弄清楚如何使用Rails编写以下SQL(我使用的是Rails 4)Activerecord方法? 我知道你可以用find_by_sql做到这一点,但我想保留活动记录关系。 这是我正在尝试创建的postGreSQL数据库的sql: SELECT * FROM (SELECT DISTINCT ON(table_a.id) table_a.name as alias_a, table_b.id, table_b.time FROM table_1 LEFT OUTER JOIN table_b ON table_a.id = table_b.id ORDER BY table_a.id, table_b.time asc) AS subquery ORDER BY alias_a asc 对于我的子查询,我有以下内容(生成上面子查询的sql): @subquery = table_a.select(“DISTINCT ON(table_a.id) table_a.name as alias_a, table_b.time”) @subquery = @subquery.joins(“LEFT OUTER JOIN table_b ON table_a.id = table_b.id”) […]

capistrano回滚是否会撤消迁移?

我是新手。 我有一个生产服务器,需要从github部署最新版本的应用程序,所以我使用的是Capistrano。 最新版本对数据库进行了一些更改,因此进行了大量迁移,因此我将使用deploy:migrate进行部署。 所以我的问题是,如果我将一些数据添加到创建的新列中(它不会更改表中的任何现有列,只创建新的表和列)然后想要回滚,那么将限制部署:rollback reverse所有的迁移也是如此? 是否删除了这些新列中的数据并将数据库恢复到以前的状态(假设除了数据库中的新增内容之外我没有进行任何数据更改)? 谢谢!

Rails 4.2.0中的简单整数赋值的RangeError应该通过validation捕获

*更新:现在已修复4.2.stable和4.2.1 * 在Rails 4.2.0(和当前的4.2.stable)中, ensure_in_range方法在ARvalidation之前发生,产生RangeError 如果我做一些简单的事情 @obj.threshold = 10_000_000_000 在具有postgres类型整数的列上 threshold | integer | 它产量 RangeError:10000000000超出ActiveRecord :: ConnectionAdapters :: PostgreSQL :: OID :: Integer的范围,限制为4来自… / 2.0.0-p598 / lib / ruby​​ / gems / 2.0.0 / bundler / gems / rails -62e9e61f2d1b / activerecord / lib / active_record / type / integer.rb:41:在`ensure_in_range’中 这是真的! 但告诉用户。 有一个像ActiveRecord模型validation validates […]