问题标签 [hstore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1038 浏览

postgresql - hstore 内部如何存储数据?

我正在使用 postgresql hstore 扩展并好奇数据是如何在内部存储的。请指出我可以在哪里查看 hstore 源代码以查看实现细节。

0 投票
3 回答
762 浏览

python - Heroku 上的 django-hstore

我在 Heroku(雪松堆栈)上部署了一个 Django(v 1.3.3)项目。它使用推荐的 dj_database_url 来配置 settings.DATABASES。一切都很好(到目前为止)。

但是,我想开始将django-hstore用于部分应用程序。根据文档,您必须将 settings.py 中的数据库引擎更改为:

因此,在我的 settings.py 文件中,我执行以下操作:

在本地,一切对我来说都很好。我的具有 hstore 字段的模型效果很好(值是字典)。

但是,当我部署到 Heroku 时,数据库引擎被重置/覆盖为:

为了调试它,我在我的设置文件中设置了引擎后打印了一个。然后,我运行 bash:

接着:

当我运行它时,我的打印语句向我显示了所需引擎(django_hstore.postgresql_psycopg2)的正确(所需)数据库设置。但是,如果我这样做:

我可以看到数据库引擎不再是 django_hstore,而是设置回正常(非 hstore)值。如果我导入我的一个模型并执行 get 加载对象,hstore 字段中的值是一个字符串,并且任何访问键的尝试都会抛出错误:

请记住,此作品可在本地找到。但是,在部署到 heroku 之后,任何将值作为字典访问的尝试都会抛出上面的 TypeError。

我的问题是:

  • 有谁知道为什么我的引擎被覆盖?如果是这样,我该如何解决这个问题?

或者

  • 是否有另一种方法可以在 Django 1.3.3 中使用 hstore 字段,这可能不需要更改引擎(因此对 Heroku 更友好)
0 投票
1 回答
2305 浏览

postgresql - 在 PostgreSQL 9.2 中重命名 hstore 键

我一直在评估 PostgreSQL 的 hstore 功能(9.2),而精美的手册唯一没有明确说明的是如何重命名键。例如,我如何将密钥重命名cai_count

"c"=>"3", "ai_voltage"=>"3", "ai_temperature"=>"28"

我认为没有直接的方法可以做到这一点,它涉及将密钥复制cai_count密钥,然后删除c密钥。我怎样才能做到这一点,理想情况下作为一个可以应用于多个记录的单行?

0 投票
1 回答
928 浏览

c - C 中的 PostgreSQL UDF 使用 hstore

我正在用 C 编写 PostgreSQL 的扩展,我需要在我的 UDF 中使用hstore。我可以无错误地构建(使用 pgxc),但不能在 SQL 查询中使用任何函数。

我已经尝试过PG_LIBS=hstore,但在加载库时遇到了未定义的引用错误。

下一次尝试是SHLIB_LINK=-L/usr/lib/postgresql/9.1/lib -lhstore(系统中不存在 libhstore.so,只有 hstore.so,所以我尝试了 sym 和硬链接)并得到了

0 投票
1 回答
8358 浏览

ruby-on-rails - Rails / postgres:为一个用户存储电话号码列表的最佳方式是什么

所以我对如何在一列中存储电话号码列表有点困惑。以下是要求:

  1. 用户可以拥有多个电话号码。
  2. 电话号码必须是唯一的,因此如果用户 A 添加了用户 B 使用的电话号码,则应显示验证错误。
  3. 如果用户有多个电话号码,则应选择默认电话号码。
  4. 解决方案必须与 Postgresql 兼容。

我想到了四种可能的解决方案:

  1. HStore:创建一个phone_number存储所有电话号码哈希的字段。例如{1=>"+1-800-123-1234", 2=>"9237492734", "default"=>1}。在这种情况下,我需要进行大量查询以确保新电话号码是唯一的,例如我需要查询User.where("phone_number @> ('1' => '+1-800-123-1234')")然后签入 2 User.where("phone_number @> ('2' => '+1-800-123-1234')")... 等等。
  2. 一个字段中的电话号码数组:phone_number将存储逗号分隔的电话号码,例如“+1-800-123-1234,9237492734”。检查现有电话号码很容易User.where("phone_number LIKE '%+1-800-123-1234%'"),但数据库要花很多时间才能找到它。default_phone也将被添加到表格中,或者按照惯例将第一个电话号码设为默认号码。
  3. 将电话号码限制为 3 个(足够了)并创建phone_number_1,phone_number_2phone_number_3字段。检查电话号码的唯一性将消耗 3 个查询。也将需要添加default_phone.
  4. 添加一个新表phone_numbers(id:integer, user_id:integer, phone_number:string, default:boolean)并设置与 User 模型的 has_many 关系。这并不是真正的诱惑......为 1 个字段创建一个完整的表。但它具有快速查找功能,并且每个用户都有无限的电话号码。

非常感谢任何想法、提示和建议。

0 投票
1 回答
3148 浏览

postgresql - 用于时间序列的 Postgres hstore

我是 postgres 的新手,正在尝试使用 hstore 扩展。寻找一些指导。我需要支持我们销售的各种产品的时间序列数据的基本报告。对于每种产品,我都有大量“时间戳,值”格式的数据。该数据在每个产品的 csv 文件中可用。

我正在考虑使用 hstore 以键值格式存储这些数据。假设单个产品的所有时间序列数据都可以存储在单个 hstore 对象中。我需要能够在特定时间查询这些数据,比如在给定时间产品的价值是多少?还需要运行简单的查询,例如检索产品价格超过 100 美元的时间。我打算有一个包含产品 id 列和 hstore 列的表。但我不太清楚如何使这项工作:

  1. hstore 列需要从 csv 中存在的数千个时间戳、值记录中加载。每当我们获得新的 csv 时,都应该附加 hstore。
  2. 该表需要存储 productId 和对应的 Timeseries 数据。您能否告知使用 hstore 是否有帮助?如果是,那么我如何从 csv 加载数据,如上所述。此外,如果随着数据的增长对 hstore 中的插入/更新性能有任何影响,请分享您的经验。
0 投票
1 回答
801 浏览

sql - 单个 hstore 值中键值对的最大数量是多少?

我有一个mapfeatures_20120813包含 2 列(标签和 pky)的 postgres 表(),大约 1000 行。每行包含hstore一个主键和一个主键:

对于某些分析,我需要将所有这些单个 hstore 键值对推送到一个单个 hstore -row 中,我不知道如何解决这个问题。
因此,我首先将所有行转换为单行文本字段:

在第二步中,我hstore从这个文本字段中创建了一个:

但问题是1000多个键值对中只有97个被写入新的hstore-field。我的结果中也看不到任何模式,它完全混淆了:

一个字段是否存在某种限制,即有hstore多少键值对适合单个字段hstore文档什么也没说。

0 投票
1 回答
621 浏览

sql - PostgreSQL和hstore为了做两个键值存储

我想创建两个键值存储。一个有一个 url 的键和一个 url 的值,另一个有一个 url(这是其他表的值)和一个分数(整数)。

我试图阅读hstore 文档,但我真的找不到如何创建表。

我想将网址表示为字符串。我正在将一个 url 映射到它的“父 url”。分数的概念应该更像一个索引,索引越高,网站越好(根据与其他页面的连接性和访问时间的概念计算)。基本上一些示例数据可能如下所示:

0 投票
1 回答
2997 浏览

ruby - Hstore 和 Rails

我正在尝试使用最新版本的 activerecord-postgres-hstore gem 在 Rails 3.2.9 项目中使用 Hstore,但在使用 ActiveRecord 为 Hstore 中的值提供的 store_accessor 时遇到了一些麻烦。

我的模型如下所示:

当我进入 rails 控制台时,我得到的是:

注意保存!确实更新了这个人。当我退出控制台并返回时,记录会返回到原始数据集。

另外,请注意,当我尝试访问它时,age它返回 nil。

如果有人想知道store_accessorActiveRecord 中的方法是什么

商店.rb

这很奇怪,因为当我send(store_attribute)[key]在控制台中执行同一行时,它可以工作:

知道这里可能会发生什么吗?

0 投票
2 回答
71 浏览

postgresql-9.1 - 如何制作在 9.0 和 9.1 中正确引入 hstore 的脚本?

我正在尝试将hstore类型引入我正在开发的项目的数据库中。但问题是我的开发机器上安装的 Postgres 服务器版本比生产机器上的版本稍新。虽然我可以简单地在CREATE EXTENSION本地执行该命令,但该命令在生产机器上不可用。

有没有办法创建一个同时安装hstore在 9.1 和 9.0 上的脚本?