小编pun*_*ish的帖子

将db中的特定模式的所有内容授予PostgreSQL中的组角色

使用PostgreSQL 9.0,我有一个名为"staff"的组角色,并希望在特定模式的表上授予此角色所有(或某些)特权.以下工作均不适用

GRANT ALL ON SCHEMA foo TO staff;
GRANT ALL ON DATABASE mydb TO staff;
Run Code Online (Sandbox Code Playgroud)

除非我在该特定表上授予所有表,否则 "staff"的成员仍然无法对模式"foo"中的各个表或(在第二个命令的情况下)对数据库中的任何表进行SELECT或UPDATE .

我能做些什么让我和我的用户的生活更轻松?

更新:借助serverfault.com的类似问题计算出来.

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO staff;
Run Code Online (Sandbox Code Playgroud)

postgresql privileges database-design roles grant

81
推荐指数
2
解决办法
12万
查看次数

列出Postgres ENUM类型

列出ENUM类型建议查询很棒.但是,它只列出了schematypname.如何列出实际的ENUM值?例如,在上面的链接答案中,我希望得到以下结果

schema         type      values
-------------  --------  -------
communication  channels  'text_message','email','phone_call','broadcast'
Run Code Online (Sandbox Code Playgroud)

postgresql

75
推荐指数
6
解决办法
5万
查看次数

在PostgreSQL中计算和节省空间

我有一个像pg这样的表:

CREATE TABLE t (
    a BIGSERIAL NOT NULL,               -- 8 b
    b SMALLINT,                         -- 2 b
    c SMALLINT,                         -- 2 b
    d REAL,                             -- 4 b
    e REAL,                             -- 4 b
    f REAL,                             -- 4 b
    g INTEGER,                          -- 4 b
    h REAL,                             -- 4 b
    i REAL,                             -- 4 b
    j SMALLINT,                         -- 2 b
    k INTEGER,                          -- 4 b
    l INTEGER,                          -- 4 b
    m REAL,                             -- 4 b
    CONSTRAINT a_pkey PRIMARY KEY (a)
);
Run Code Online (Sandbox Code Playgroud)

以上每行最多可添加50个字节.我的经验是,我需要另外40%到50%的系统开销,甚至没有任何用户创建的索引.所以,每行约75个字节.我将在表中有许多行,可能超过1450亿行,因此该表将推动13-14太字节.我可以使用什么技巧来压缩这个表?我的可能想法如下......

将 …

postgresql storage database-design bigdata

58
推荐指数
4
解决办法
2万
查看次数

如何将函数应用于Postgres中数组列的每个元素?

Pg查询返回一个数组.我想检索每个元素格式化为3位小数.如何将函数应用于数组的每个元素?像下面的东西(显然是错的) -

SELECT Round(ARRAY[1.53224,0.23411234], 2);
{1.532, 0.234}
Run Code Online (Sandbox Code Playgroud)

我想我正在寻找像Perl这样的map功能.

arrays postgresql

48
推荐指数
3
解决办法
3万
查看次数

Postgresql表中的最大(可用)行数

我意识到,根据Pg文档(http://www.postgresql.org/about/),可以在表中存储无限数量的行.但是,如果有的话,可用行数的"经验法则"是什么?

背景:我想为1300万个细胞存储几十年的每日读数.这可以达到13 M*(366 | 365)*20~9.5e10,或95 B行(实际上,大约120 B行).

因此,使用表分区,我设置了一个主表,然后按年继承表.将行分为每个表约5.2 B行.

每行是9个SMALLINT,两个INT,因此,26个字节.除此之外,每行23字节的Pg开销,每行得49个字节.因此,每张表,没有任何PK或任何其他索引,将在~0.25 TB的重量.

对于初学者,我只创建了上述数据的一部分,即只有大约250,000个单元格.我必须做一堆调整(创建适当的索引等),但现在的性能真的很糟糕.此外,每次我需要添加更多数据时,我都必须删除密钥并重新创建它们.保存的优点是,一旦加载了所有内容,它将是一个只读数据库.

有什么建议?任何其他分区策略?

postgresql

46
推荐指数
1
解决办法
3万
查看次数

Postgres ENUM数据类型还是CHECK CONSTRAINT?

我一直在将MySQL数据库迁移到Pg(9.1),并且已经通过在Pg中创建新数据类型来模拟MySQL ENUM数据类型,然后将其用作列定义.我的问题 - 我可以使用CHECK CONSTRAINT而且会更好吗?实现MySQL ENUM类型以强制行中的特定值条目.可以用CHECK CONSTRAINT完成吗?如果是,它会更好(或更糟)吗?

postgresql postgresql-9.1

44
推荐指数
3
解决办法
3万
查看次数

Postgres FK引用复合PK

考虑

CREATE TABLE foo (
    id SERIAL,
    foo_created_on ABSTIME,
    foo_deactivated_on ABSTIME,
    PRIMARY KEY (id, foo_created_on)
);

CREATE TABLE bar (
    id SERIAL,
    bar_created_on ABSTIME,
    bar_deactivated_on ABSTIME,
    foo_id REFERENCES ( .. what goes here? ..),
    PRIMARY KEY (id, bar_created_on)
);
Run Code Online (Sandbox Code Playgroud)

如何在"bar"中创建引用"foo"中的PK的FK?

postgresql

30
推荐指数
2
解决办法
2万
查看次数

jQuery UI自动完成在输入字段中显示值而不是标签

jQuery UI自动完成的一个潜在的简单问题是让我感到困惑.我的来源是

var ac = [
    {
        label: "One Thing",
        value: "One-Thing"
    },
    {
        label: "Two Thing",
        value: "Two-Thing"
    },      
]
Run Code Online (Sandbox Code Playgroud)

我正在调用小部件

$(function() {
    $( "#search" ).autocomplete({
        source: PK.getAutocompleteSource(),
        focus: function( event, ui ) {
            $("#search").val(ui.item.label);
            return false;  
        },
        select: function( event, ui ) {
            $("#search").val(ui.item.label);
            PK.render(ui.item.value);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

一切正常.当我#search输入输入字段时,匹配标签会显示在下拉列表中,当我select执行正确的搜索时.当我使用箭头键(或鼠标)在下拉列表中选择不同的项目时,小部件甚至会label#search输入字段中显示.除了,当我按下Enter键时,小部件#searchvalue而不是填充输入字段label.所以这个领域显示的是One-Thing而不是One Thing.

我怎么能纠正这个?当然,我期待的是更合理的行为,不是吗?

jquery-ui-autocomplete

24
推荐指数
3
解决办法
2万
查看次数

是否可以在Postgres中存储1个字节的数字?

我想在Postgres中存储每个记录7个8位整数值.Pg不提供单字节整数类型,SMALLINT或2字节,是最小的整数数据类型.无论如何我可以存储我的7个8位数字并节省空间吗?

具有7个元素数组的数组类型是否更紧凑?或者,我应该对我的7个数字进行二进制表示(例如,在Perl中使用pack)并将其存储在单个bytea字段中吗?

还有其他建议吗?

postgresql

21
推荐指数
3
解决办法
1万
查看次数

使用jQuery存储复杂表单的状态

我有一个相当复杂的形式,其中有许多"步骤",由用户填写.某些步骤(将它们视为表单段)具有默认选项,但在单击"输入自定义值"时,它们会显示一个隐藏的字段集,用户可以在其中输入信息.这是一个示例

<div id="#s1_normal">
<input type="radio" name="mode" value="a"> Mode A
<input type="radio" name="mode" value="b"> Mode B
Choose one of the above for applying average coefficient 
values of "a" or "b" to 100% of your product or
<a href="#" onclick="toggleCustom('s1');">enter custom values</a>
</div>

<div id="#s1_custom">
%a: <input type="text" name="perc_a"> coeff. a <input type="text" name="coeff_a">
%b: <input type="text" name="perc_b"> coeff. b <input type="text" name="coeff_b">
Enter custom values above or 
<a href="#" onclick="toggleCustom('s1');">choose average values</a>
Run Code Online (Sandbox Code Playgroud)

有几个这样的段,例如,#s1 ..#s7.这是我的任务.我想让用户保存表单的状态.因此,一旦用户填写了整个表单,选择某些段的平均默认值,并为其他段输入自定义值,用户就可以单击一个按钮并保存整个状态以便稍后解冻.我在想,如果我可以将状态保存在我可以序列化的对象中,我可以将它保存在db表或其他持久存储中.

用户可以稍后返回并重新构建整个上一个会话.

我该怎么做呢?有getAttributes插件http://plugins.jquery.com/project/getAttributes,并且有jQuery serialize方法,但我不能为我的生活开始.请朝正确的方向推动我.

forms jquery session-state

19
推荐指数
2
解决办法
2万
查看次数