ruby - 使用 pg gem 显示 postgres sql 结果

标签 ruby postgresql pg

如何仅使用 pg gem 显示 postgres 查询的结果集?我希望它采用表格形式,就像在 pgAdmin GUI 工具中一样。下面的代码没有帮助。文档不清楚,所以我无法找到另一种出路。请帮忙!

require 'pg'
conn = PGconn.connect("db.corp.com", 5432, '', '', "schema", "user", "pass")
sql = 'select * from tbl limit 2'
res  = conn.exec(sql)

res.each do |row|
    row.each do |column|    
    end
end

gem list - pg (0.9.0.pre156 x86-mswin32)

ruby - 1.8.7

最佳答案

步骤 - 1. 获取结果集中的列名列表(类型 PGResult)。 2. 迭代结果集的每一行(散列)。 3. 对于在步骤 1 中找到的每一行(散列键)/列,找到列值(散列值)。

然后将结果打印为 csv。我认为这效率不高,但可以完成工作。

require 'pg'
conn = PGconn.connect("db.corp.com", 5432, '', '', "schema", "user", "pass")
sql = 'select * from tbl limit 2'
res  = conn.exec(sql)

rows_count = res.num_tuples
column_names = res.fields
col_header = column_names.join(', ')

puts col_header

for i in 0..rows_count-1
    row_hash = res[i]
    row_arr = []
    column_names.each do |col|
        row_arr << row_hash[col]
    end
    row = row_arr.join(', ')
    puts row
end

关于ruby - 使用 pg gem 显示 postgres sql 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31018408/

相关文章:

ruby - ruby 中的 openssl 等效命令

postgresql - 如何在 Postgresql 中水平组契约(Contract)一个表上的两个选择查询?

ruby-on-rails - 由于 ActiveRecord,Rails 应用程序无法在生产环境中启动

ruby-on-rails - 当 check_box 被选中时如何创建一个对象?

ruby-on-rails - 在内存 Ruby 中压缩一个字符串

postgresql - Flyway无法在Postgres Docker中找到角色

ruby-on-rails-3 - Gem Install PG 神秘报错extconf.rb相关

ruby-on-rails - 如何在ubuntu "pg"上安装rails 3的 "can not build native extensions"gem

javascript - gmap4rails 在本地工作但不显示在 heroku 上

ruby-on-rails - 如何从 SQLite3 迁移到 PostgreSQL