小编pen*_*ner的帖子

Rails原始查询csv格式,通过控制器返回

我正在使用活动记录来获取我的故事,然后生成CSV,这是在rails cast中完成的标准方式.但我有很多行,需要几分钟.我想如果我能让posgresql做csv渲染,那么我可以节省一些时间.

这是我现在所拥有的:

query = "COPY stories TO STDOUT WITH CSV HEADER;"
results = ActiveRecord::Base.connection.execute(query);
Run Code Online (Sandbox Code Playgroud)

但是此查询的结果为空:

 => #<PG::Result:0x00000006ea0488 @connection=#<PG::Connection:0x00000006c62fb8 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>> 
2.0.0-p247 :053 > result.count
 => 0 
Run Code Online (Sandbox Code Playgroud)

更好的了解方式:

2.0.0-p247 :059 >   result.to_json
 => "[]" 
Run Code Online (Sandbox Code Playgroud)

我怀疑我的控制器看起来像这样:

format.csv { send_data raw_results }
Run Code Online (Sandbox Code Playgroud)

这适用于普通查询,我只是无法弄清楚将CSV结果返回到rails的SQL语法.

UPDATE

CSV输出从120000毫秒下降到290毫秒

我的模特:

def self.to_csv(story_ids)

    csv  = []
    conn = ActiveRecord::Base.connection.raw_connection
    conn.copy_data("COPY (SELECT * FROM stories WHERE stories.id IN (#{story_ids.join(',')})) TO STDOUT WITH (FORMAT CSV, HEADER TRUE, FORCE_QUOTE *, ESCAPE E'\\\\');") do
      while row = conn.get_copy_data
        csv.push(row)
      end …
Run Code Online (Sandbox Code Playgroud)

csv postgresql pg ruby-on-rails-4 rails-activerecord

14
推荐指数
1
解决办法
3360
查看次数

使用ruby 1.9.3在Ubuntu 11.10上安装ruby-rvm

rvm通过以下方式正确安装:sudo apt-get install ruby​​-rvm

当我尝试安装ruby 1.9.3时出现这些错误?

anthony@SnakeDoc:~$ rvm install 1.9.3
mkdir: cannot create directory `/usr/share/ruby-rvm/gems/ruby-1.9.3-p0': Permission      denied
Installing Ruby from source to: /usr/share/ruby-rvm/rubies/ruby-1.9.3-p0, this may take   a while depending on your cpu(s)...

ruby-1.9.3-p0 - #fetching 
ruby-1.9.3-p0 - #extracting ruby-1.9.3-p0 to /usr/share/ruby-rvm/src/ruby-1.9.3-p0
/usr/share/ruby-rvm/scripts/functions/utility: line 142: /usr/share/ruby-rvm/log/ruby-    1.9.3-p0/extract.log: Permission denied
/usr/share/ruby-rvm/scripts/functions/utility: line 148: /usr/share/ruby-rvm/log/ruby-  1.9.3-p0/extract.log: Permission denied
ERROR: Error running 'bunzip2 < '/usr/share/ruby-rvm/archives/ruby-1.9.3-p0.tar.bz2' |   tar xf - -C /usr/share/ruby-rvm/tmp/rvm_src_23435', please read /usr/share/ruby-  rvm/log/ruby-1.9.3-p0/extract.log
ERROR: There has been an error while trying to …
Run Code Online (Sandbox Code Playgroud)

ruby rvm

7
推荐指数
1
解决办法
8313
查看次数

您可以在git commit消息中标记某人吗?

有时,我想在git commit消息中召集人们。而且它还会让人们知道他们应该查看提交。

示例:“修复+ JoeSchmoe引起的问题”

git

5
推荐指数
2
解决办法
2568
查看次数

汇总一个表,其中列与另一张表匹配,并将结果联接

我已经尝试了好一阵子了,并决定我不会很快解决这个问题!我在这里先向您的帮助表示感谢。爱这个地方。

我有2张桌子

日期:

date_id, user_id, cost, title, description
Run Code Online (Sandbox Code Playgroud)

date_rating:

date_id, user_id, rating
Run Code Online (Sandbox Code Playgroud)

我有多个条目相同date_id但不同user_id。换句话说,同一日期的多个评分。评级为1或-1。我想将所有评分加在一起,date_id然后将其添加到匹配的DATEdate_id中。这样我在表上有一列称为rating的列DATE。这样,我可以按评分排序。听起来很简单,但事实证明并非如此。我猜DBA不是我的事!

编辑:MySQL客户端版本:mysqlnd 5.0.8-dev-20102224-$修订:310735 $

mysql sql sum subquery

0
推荐指数
1
解决办法
4291
查看次数

标签 统计

csv ×1

git ×1

mysql ×1

pg ×1

postgresql ×1

rails-activerecord ×1

ruby ×1

ruby-on-rails-4 ×1

rvm ×1

sql ×1

subquery ×1

sum ×1