Questions tagged «postgresql»

PostgreSQL的所有版本。如果该上下文很重要,请添加其他特定于版本的标记,例如postgresql-11。

1
如何在PostgreSQL中将字符串转换为双精度?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 4年前关闭。 如何在PostgreSQL中将字符串转换为双精度? 我尝试了类似的东西: update points set latitude2 = cast(latitude as double) ; 其中latitude是一个字符串,而latitude2是一个double。我就是无法正常工作。
19 postgresql 

7
在Postgresql查询中有效选择多个连续范围的开始和结束
我在一个表中有大约十亿行数据,其中一个名称和一个介于1-288之间的整数。对于给定的名称,每个int都是唯一的,并且不会出现该范围内的每个可能的整数-因此存在间隙。 此查询生成一个示例案例: --what I have: SELECT * FROM ( VALUES ('foo', 2), ('foo', 3), ('foo', 4), ('foo', 10), ('foo', 11), ('foo', 13), ('bar', 1), ('bar', 2), ('bar', 3) ) AS baz ("name", "int") 我想为每个名称和连续整数序列生成一个查询表,并在其中一行。每个这样的行将包含: 名称 -的值的名字列 开始 -在所述连续序列中的第一个整数 端 -在连续序列的最终值 跨度 - 端-开始+ 1 该查询为上述示例生成示例输出: --what I need: SELECT * …
19 query  postgresql 


3
PostgreSQL不接受复制连接
普通的旧流复制。PostgreSQL:9.2.7 Windows 8.1 64位 我的主要群集和辅助群集位于同一 Windows计算机上。我已经完成了pg_start_backup()和所有操作,因此两个节点的数据完全相同。 现在,复制的问题是从属服务器的“复制连接”没有连接到主服务器,但是我可以使用psql shell使用相同的参数进行连接。我认为罪魁祸首是奴隶的recovery.conf中的连接字符串: primary_conninfo = 'host = 127.0.0.1 port = 5432 user = postgres password = postgres' 我尝试了localhost,0.0.0.0,lan IP,但pg log表示: FATAL: could not connect to the primary server: FATAL: no pg_hba.conf entry for replication connection from host "127.0.0.1", user "postgres", SSL off 现在看一下我主人的pg_hba.conf: host all …

3
PostgreSQL使用count()确定百分比(广播问题)
我正在尝试运行以下查询,以提供patients表中具有该refinst列值的行的百分比。我一直得到0的结果。 select (count (refinst) / (select count(*) from patients) * 100) as "Formula" from patients; 该表有15556行,并select count(refinst) from patients告诉我其中的1446 行在该refinst列中有一个值。我想从查询中获得的响应为30.62(1446/15556*100=30.62XXXXX,四舍五入为两位小数)。 我很确定它与计数结果的数据类型有关(我假设的是整数)。如果我将整数除以整数并且结果小于0,则将其截断为0正确吗?如果是这样,有人可以告诉我如何将计数结果转换为2位小数的数字,以便结果也将四舍五入到2位小数吗? 我敢肯定,与多个count语句相比,有一种更好的方法来编写此代码。我正在寻找一种更处理器有效的方法来特别编写此查询。
19 postgresql  count  cast 


1
错误:数据库“ dbname”不存在
根据文档,只要不连接数据库,就可以使用以下命令在控制台中删除数据库: DROP DATABASE dbname; 或者,我可以使用包装器工具将其删除dropdb。 两者都给我一个错误,指出该数据库不存在,但是在控制台中并键入命令时\l,我得到了一个数据库列表,包括要删除的数据库。 List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------------------+-----------+----------+-------------+-------------+----------------------- Blog_development | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 | Blog_test | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 | 数据库名称为Blog_development(及其下一个)。我在玩滑轨,尝试从在线文档中学习。我想重新开始并删除所有内容。 但是,当尝试删除它时,它说它不存在。我是PostgreSQL的新手,所以我有点迷失了,除了错误在不存在时弹出之外,文档中没有关于此错误的任何内容。当然存在,就在那。
19 postgresql 

2
用plpgsql编写的函数调用的Postgres查询计划
它使用的时候可能pgadmin还是plsql获得查询计划的搁置了内部执行SQL语句ü SER d efined ˚F油膏(UDF)使用EXPLAIN。那么,如何掌握UDF特定调用的查询计划?我看到UDF F()在pgadmin中抽象为一个操作。 我看过文档,但找不到任何东西。 目前,我正在提取语句并手动运行它们。但这对于大型查询并不会减少它。 例如,考虑下面的UDF。此UDF即使具有打印其查询字符串的能力,也不能与复制粘贴一起使用,因为它具有在本地创建的临时表,在粘贴和执行该表时不存在该临时表。 CREATE OR REPLACE FUNCTION get_paginated_search_results( forum_id_ INTEGER, query_ CHARACTER VARYING, from_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, to_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, in_categories_ INTEGER[] DEFAULT '{}') RETURNS SETOF post_result_entry AS $$ DECLARE join_string CHARACTER VARYING := ' '; from_where_date …

1
如何在未嵌套的数组中保留元素的原始顺序?
给定字符串: “我认为PostgreSQL很漂亮” 我想对在该字符串中找到的单个单词进行操作。本质上,我有一个单独的字符串,可以从中获取单词的详细信息,并希望在此字典中加入该字符串的未嵌套数组。 到目前为止,我有: select word, meaning, partofspeech from unnest(string_to_array('I think that PostgreSQL is nifty',' ')) as word from table t join dictionary d on t.word = d.wordname; 这样就完成了我希望做的基本工作,但是并没有保留原始的单词顺序。 相关问题: 带有元素编号的PostgreSQL unnest()


2
如何在postgres中对现有表进行分区?
我想按日期范围对具有1M +行的表进行分区。通常如何做到这一点而又不需要太多的停机时间或冒着丢失数据的风险?这是我正在考虑的策略,但可以提出一些建议: 现有表是主表,子表继承自该表。随着时间的流逝,数据会从主数据移到子数据,但是一段时间后,某些数据将在主表中,而某些数据将在子表中。 创建一个新的主表和子表。在子表的现有表中创建数据副本(因此数据将驻留在两个位置)。子表拥有最新数据后,请更改所有插入以指向新的主表并删除现有表。


1
特殊数据库“ postgres”有什么用?
我有一台PostgreSQL服务器,上面运行着几个数据库。其中一个数据库称为postgres,从一开始就在那里。我看不到任何表,也从未明确使用它,但是我注意到,任何用户都可以在数据库中创建表(这不是我想要的-除了管理员,我不希望任何用户创建表任何地方的任何表格)。 我感觉这是服务器正常运行所需的某种特殊数据库,但是它的确切目的是什么?里面(或可能)存储什么样的数据?它是否保存有关其他数据库的元数据(例如information_schema?)。如果我connect从公共场所撤消了对该数据库的特权,会发生令人讨厌的事情吗?还是我什至掉线了? 我用谷歌搜索了半个小时,但是总是得到完全无关的东西,因为这个词postgres也用于用户postgres和DBMS本身。
18 postgresql 

2
如何在upsert中获取冲突行的ID?
我有一个tag包含2列的表格:id(uuid)和name(text)。现在,我想在表中插入一个新标签,但是如果该标签已经存在,我只想获取id现有记录的。 我以为我可以ON CONFLICT DO NOTHING结合使用RETURNING "id": INSERT INTO "tag" ("name") VALUES( 'foo' ) ON CONFLICT DO NOTHING RETURNING "id"; 但是,如果名称“ foo”的标记已存在,则返回空结果集。 然后,我将查询更改为使用noop DO UPDATE子句: INSERT INTO "tag" ("name") VALUES( 'foo' ) ON CONFLICT ("name") DO UPDATE SET "name" = 'foo' RETURNING "id"; 这可以按预期工作,但是有些混乱,因为我只是将名称设置为已经存在的值。 这是解决此问题的方法,还是我缺少一种更简单的方法?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.