You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何将整张表内容存入哈希表?

搞定PostgreSQL查询结果转哈希表的问题

我来帮你修正这个代码问题~你现在的代码有两个关键小问题:

  • 单引号里的#{table}不会被替换成实际的表名,只会当成普通字符串存进哈希键里
  • 每次循环都直接把当前行覆盖哈希对应键的值,最后哈希里只会保留最后一行数据,没法存下所有行

修正后的完整代码

def table_content_to_hash(table)
  hash = {}
  rs = @pg_conn.exec "SELECT * FROM #{table}"
  # 先给对应表名的键初始化一个空数组
  hash[table] = []
  rs.each do |child|
    # 把每一行数据追加到数组里
    hash[table] << child
  end
  puts hash
end

更简洁的写法(一步到位)

其实PostgreSQL的结果集对象自带to_a方法,可以直接把所有行转成数组,省去循环的步骤:

def table_content_to_hash(table)
  hash = { table => @pg_conn.exec("SELECT * FROM #{table}").to_a }
  puts hash
end

更新:验证可行的最终版本

用Spickermann的方案优化后,代码已经可以正常运行啦,最终的精简版本就是上面这个,要是你喜欢分步逻辑更清晰的写法,就用第一个修正后的版本就行。


内容的提问来源于stack exchange,提问作者Fatna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:42:32