问题标签 [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.
postgresql - hstore 内部如何存储数据?
我正在使用 postgresql hstore 扩展并好奇数据是如何在内部存储的。请指出我可以在哪里查看 hstore 源代码以查看实现细节。
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 更友好)
postgresql - 在 PostgreSQL 9.2 中重命名 hstore 键
我一直在评估 PostgreSQL 的 hstore 功能(9.2),而精美的手册唯一没有明确说明的是如何重命名键。例如,我如何将密钥重命名c
为ai_count
?
"c"=>"3", "ai_voltage"=>"3", "ai_temperature"=>"28"
我认为没有直接的方法可以做到这一点,它涉及将密钥复制c
到ai_count
密钥,然后删除c
密钥。我怎样才能做到这一点,理想情况下作为一个可以应用于多个记录的单行?
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 和硬链接)并得到了
ruby-on-rails - Rails / postgres:为一个用户存储电话号码列表的最佳方式是什么
所以我对如何在一列中存储电话号码列表有点困惑。以下是要求:
- 用户可以拥有多个电话号码。
- 电话号码必须是唯一的,因此如果用户 A 添加了用户 B 使用的电话号码,则应显示验证错误。
- 如果用户有多个电话号码,则应选择默认电话号码。
- 解决方案必须与 Postgresql 兼容。
我想到了四种可能的解决方案:
- HStore:创建一个
phone_number
存储所有电话号码哈希的字段。例如{1=>"+1-800-123-1234", 2=>"9237492734", "default"=>1}
。在这种情况下,我需要进行大量查询以确保新电话号码是唯一的,例如我需要查询User.where("phone_number @> ('1' => '+1-800-123-1234')")
然后签入 2User.where("phone_number @> ('2' => '+1-800-123-1234')")
... 等等。 - 一个字段中的电话号码数组:
phone_number
将存储逗号分隔的电话号码,例如“+1-800-123-1234,9237492734”。检查现有电话号码很容易User.where("phone_number LIKE '%+1-800-123-1234%'")
,但数据库要花很多时间才能找到它。default_phone
也将被添加到表格中,或者按照惯例将第一个电话号码设为默认号码。 - 将电话号码限制为 3 个(足够了)并创建
phone_number_1
,phone_number_2
和phone_number_3
字段。检查电话号码的唯一性将消耗 3 个查询。也将需要添加default_phone
. - 添加一个新表
phone_numbers
(id:integer, user_id:integer, phone_number:string, default:boolean)并设置与 User 模型的 has_many 关系。这并不是真正的诱惑......为 1 个字段创建一个完整的表。但它具有快速查找功能,并且每个用户都有无限的电话号码。
非常感谢任何想法、提示和建议。
postgresql - 用于时间序列的 Postgres hstore
我是 postgres 的新手,正在尝试使用 hstore 扩展。寻找一些指导。我需要支持我们销售的各种产品的时间序列数据的基本报告。对于每种产品,我都有大量“时间戳,值”格式的数据。该数据在每个产品的 csv 文件中可用。
我正在考虑使用 hstore 以键值格式存储这些数据。假设单个产品的所有时间序列数据都可以存储在单个 hstore 对象中。我需要能够在特定时间查询这些数据,比如在给定时间产品的价值是多少?还需要运行简单的查询,例如检索产品价格超过 100 美元的时间。我打算有一个包含产品 id 列和 hstore 列的表。但我不太清楚如何使这项工作:
- hstore 列需要从 csv 中存在的数千个时间戳、值记录中加载。每当我们获得新的 csv 时,都应该附加 hstore。
- 该表需要存储 productId 和对应的 Timeseries 数据。您能否告知使用 hstore 是否有帮助?如果是,那么我如何从 csv 加载数据,如上所述。此外,如果随着数据的增长对 hstore 中的插入/更新性能有任何影响,请分享您的经验。
sql - 单个 hstore 值中键值对的最大数量是多少?
我有一个mapfeatures_20120813
包含 2 列(标签和 pky)的 postgres 表(),大约 1000 行。每行包含hstore
一个主键和一个主键:
对于某些分析,我需要将所有这些单个 hstore 键值对推送到一个单个 hstore -row 中,我不知道如何解决这个问题。
因此,我首先将所有行转换为单行文本字段:
在第二步中,我hstore
从这个文本字段中创建了一个:
但问题是1000多个键值对中只有97个被写入新的hstore-field。我的结果中也看不到任何模式,它完全混淆了:
一个字段是否存在某种限制,即有hstore
多少键值对适合单个字段hstore
?文档什么也没说。
sql - PostgreSQL和hstore为了做两个键值存储
我想创建两个键值存储。一个有一个 url 的键和一个 url 的值,另一个有一个 url(这是其他表的值)和一个分数(整数)。
我试图阅读hstore 文档,但我真的找不到如何创建表。
我想将网址表示为字符串。我正在将一个 url 映射到它的“父 url”。分数的概念应该更像一个索引,索引越高,网站越好(根据与其他页面的连接性和访问时间的概念计算)。基本上一些示例数据可能如下所示:
ruby - Hstore 和 Rails
我正在尝试使用最新版本的 activerecord-postgres-hstore gem 在 Rails 3.2.9 项目中使用 Hstore,但在使用 ActiveRecord 为 Hstore 中的值提供的 store_accessor 时遇到了一些麻烦。
我的模型如下所示:
当我进入 rails 控制台时,我得到的是:
注意保存!确实更新了这个人。当我退出控制台并返回时,记录会返回到原始数据集。
另外,请注意,当我尝试访问它时,age
它返回 nil。
如果有人想知道store_accessor
ActiveRecord 中的方法是什么
商店.rb
这很奇怪,因为当我send(store_attribute)[key]
在控制台中执行同一行时,它可以工作:
知道这里可能会发生什么吗?
postgresql-9.1 - 如何制作在 9.0 和 9.1 中正确引入 hstore 的脚本?
我正在尝试将hstore
类型引入我正在开发的项目的数据库中。但问题是我的开发机器上安装的 Postgres 服务器版本比生产机器上的版本稍新。虽然我可以简单地在CREATE EXTENSION
本地执行该命令,但该命令在生产机器上不可用。
有没有办法创建一个同时安装hstore
在 9.1 和 9.0 上的脚本?