标签: hstore

是否可能,以及Postgresql的HStore类型中嵌套哈希的语法是什么?

我甚至不确定Postgres的HStore数据类型是否可以包含嵌套哈希,如果可以的话,如何插入它们?

这是我到目前为止所尝试的:

-- Database: test1

-- DROP DATABASE test1;
/*
CREATE DATABASE test1
  WITH OWNER = iainuser
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'en_GB.UTF-8'
       LC_CTYPE = 'en_GB.UTF-8'
       CONNECTION LIMIT = -1;
*/
/* create extension hstore; */
/*drop table my_store;*/
/*
create table my_store (
  id serial primary key not null,
  doc hstore
);

CREATE INDEX my_store_doc_idx_gist
  ON my_store
  USING gist
  (doc);
*/
/* select doc from my_store; */
/*
insert into my_store (doc) values ( '"a" => …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.1 hstore

9
推荐指数
1
解决办法
5269
查看次数

PostreSQL中的聚合hstore列

我有这样一张桌子:

                         Table "public.statistics"

id         | integer                | not null default nextval('statistics_id_seq'::regclass)
goals      | hstore                 | 
Run Code Online (Sandbox Code Playgroud)

项目:

|id    |goals                  |
|30059 |"3"=>"123"             |
|27333 |"3"=>"200", "5"=>"10"  |
Run Code Online (Sandbox Code Playgroud)

我需要做什么来通过哈希键来聚合所有值?

我想得到这样的结果:

select sum(goals) from statistics
Run Code Online (Sandbox Code Playgroud)

返回

|goals                 |
|"3"=>"323", "5"=>"10" |
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate-functions postgresql-9.1 hstore

9
推荐指数
2
解决办法
3508
查看次数

如何在Rails 4中通过hstore属性订购结果?

如何通过hstore属性订购查询结果?

@items = Item.includes(:product).order('products.properties @> hstore("platform")')
Run Code Online (Sandbox Code Playgroud)

原因

PG::Error: ERROR:  column "platform" does not exist
LINE 1: ...oduct_id"  ORDER BY products.properties @> hstore("platform"...
Run Code Online (Sandbox Code Playgroud)

platform 是一个hstore密钥,存储在属性列中,它是一个hstore类型.

ruby postgresql ruby-on-rails hstore

9
推荐指数
1
解决办法
2883
查看次数

转义hstore包含JDBC Prepared语句中的运算符

我正在使用PostgreSQL 9.1.4和hstore以及PostgreSQL JDBC驱动程序(9.1-901.jdbc4).

我试图使用包含运算符(?,?&,?|在一个PreparedStatement),但是?字符被解析为一个变量占位符.可以转义此字符以在查询中发送正确的运算符吗?

一个例子:

PreparedStatement stmt = conn.prepareStatement("SELECT a, b FROM table1 WHERE c ? 'foo' AND d = ?");
stmt.setInt(1, dValue);
stmt.executeQuery();
Run Code Online (Sandbox Code Playgroud)

在此表单中,以下示例将引发异常:

org.postgresql.util.PSQLException: No value specified for parameter 2.
Run Code Online (Sandbox Code Playgroud)

更新:

在调查pgjdbc驱动程序中的查询解析器后,此代码段似乎表明无法转义该?字符.剩下的问题是:

  • JDBC规范中是否有任何允许?转义的东西,而不是参数占位符?
  • 有没有更好的解决这个问题的方法,而不仅仅是使用手动插入查询字符串的变量的简单语句?

postgresql jdbc hstore

8
推荐指数
1
解决办法
4588
查看次数

hstore密钥的唯一索引或约束

如果该密钥存在,我想在hstore列中的特定键上创建唯一索引或约束.我希望在另一个问题的某处可以找到答案:

PostgreSQL中表达式索引的实际限制

但我尝试了我能提出的每个版本的语法,没有任何方法可行.

目前,我的表是

hstore_table

hstore字段是hstore_value

当它们存在时,我想要强制独特的是'foo'和'bar'.

我的PostgreSQL版本是8.4.13

postgresql hstore

8
推荐指数
1
解决办法
1777
查看次数

postgresql中hstore与json数据类型的用例

在Postgresql中,hstore和json数据类型似乎具有非常相似的用例.你什么时候选择使用一个与另一个?初步想法:

  • 你可以用json嵌套; 你不能用hstore
  • 解析json的函数在9.3之前不可用

postgresql hstore postgresql-9.2

8
推荐指数
1
解决办法
1718
查看次数

在django nose测试中安装hstore扩展

我已成功安装了hstore扩展,一切都可以正常工作syncdb.(我正在使用djorm-ext-hstore)

但是,nose会创建一个新的临时数据库来运行测试,并且没有安装hstore.

我需要CREATE EXTENSION HSTORE;在鼻子同步数据库之前运行测试数据库,但我找不到有关如何执行此操作的任何信息.

有任何想法吗?

python django postgresql nose hstore

8
推荐指数
3
解决办法
3520
查看次数

如何在Ruby on Rails灯具YAML文件中为HStore字段设置默认值?

我正在尝试使用PostreSQLRuby on Rails 4.0 HStore扩展.我想要一个我的HStore字段:

class Thing < ActiveRecord::Base
  # ...
  validates :field_name, presence: true
  # ...
end
Run Code Online (Sandbox Code Playgroud)

作为HStore的新手,我为Thing(rails g scaffold Thing field_name:hstore)生成了一个脚手架.这样做我的fixture文件(test/fixtures/things.yml)没有包含默认值field_name:

one:
  # ...
  field_name:
  # ...
Run Code Online (Sandbox Code Playgroud)

rake test由于没有为必填字段提供值,导致失败的原因.

我的问题是:如何在我的灯具YAML文件中设置一个值,field_name以便我的测试通过?

到目前为止,我知道:

  1. 不起作用:

    one:
      # ...
      field_name:
        small: 2
        medium: 5
        large: 4
      # ...
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这也不能正常工作:

    one:
      # ...
      field_name: {"small"=>"2", "medium"=>"5", "large"=>"4"}
      # ...
    
    Run Code Online (Sandbox Code Playgroud)

谢谢!

postgresql yaml ruby-on-rails hstore ruby-on-rails-4

8
推荐指数
2
解决办法
1904
查看次数

hstore或json数据的Django数字比较?

是否可以通过将 hstore 值转换为int或来过滤查询集float

我遇到了一个问题,我们需要向现有数据模型添加更强大的查询。数据模型使用HStoreField来存储大部分建筑数据,我们需要能够对它们进行查询/过滤,并且一些值需要被视为数值。

但是,由于这些值被视为字符串,因此会逐个比较它们并导致不正确的查询。例如,'700' > '1000'

因此,如果我想查询 sqft 值在 700 到 1000 之间的所有项目,我会得到零结果,即使我可以清楚地看到有数百个项目的值在该范围内。如果我只查询 sqft 值 >= 700 的项目,我只会得到 sqft 值以 7、8 或 9 开头的结果。

我还尝试使用来自的 JsonField 进行测试django-pgjson(因为我们还没有使用 Django 1.9),但它似乎有同样的问题。

设置

Django==1.8.9
django-pgjson==0.3.1 (for jsonfield functionality)
Postgres==9.4.7
Run Code Online (Sandbox Code Playgroud)

模型.py

Django==1.8.9
django-pgjson==0.3.1 (for jsonfield functionality)
Postgres==9.4.7
Run Code Online (Sandbox Code Playgroud)

示例数据

这是 hstore 字段中某些数据的示例。

address1: ...
address2: ...
city: ...
state: ...
zipcode: ...
data: {
    'year_built': '1995',
    'building_type': 'residential',
    'building_subtype': 'single-family',
    'bedrooms': '2',
    'bathrooms': '1', …
Run Code Online (Sandbox Code Playgroud)

python django postgresql hstore

8
推荐指数
1
解决办法
836
查看次数

SQL Server相当于hstore?

在SQL Server中是否有相当于Postgresql的hstore?我正在使用Web应用程序运行SQL Server 2008,该应用程序对数据库上的稀疏键/值配对的需求越来越大.在我们的情况下,每次发生这种情况时都不可能创建新列.目前,我们使用标准列并将所有这些"无模式"稀疏数据抛出到单个列中,然后在应用程序中运行检查以获取所需的密钥.这不是很干净/优雅.

我刚刚开始研究另一个使用Postgresql的项目,并使用hstore来解决一个非常类似的问题.对于我们遇到的问题,hstore是一个更清晰的解决方案,所以现在我想知道SQL Server 2008中是否有相同的功能?

sql-server postgresql hstore

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