Questions tagged «postgresql»

PostgreSQL是一个开放源代码的,对象关系数据库管理系统(ORDBMS),可用于所有主要平台,包括Linux,UNIX,Windows和OSX。提出问题时,请注明确切的Postgres版本。有关管理或高级功能的问题最好直接到dba.stackexchange.com。

10
PostgreSQL:两个日期之间的天/月/年
我正在寻找一种在PostgreSQL中实现SQLServer函数datediff的方法。那是, 此函数返回在指定开始日期和结束日期之间交叉的指定日期部分边界的计数(作为有符号整数值)。 datediff(dd, '2010-04-01', '2012-03-05') = 704 // 704 changes of day in this interval datediff(mm, '2010-04-01', '2012-03-05') = 23 // 23 changes of month datediff(yy, '2010-04-01', '2012-03-05') = 2 // 2 changes of year 我知道我可以简单地通过减法来做“ dd”操作,但是对其他两个方法有什么想法吗?
94 postgresql  date 

2
为特定的表和条目创建数据库转储
我有一个包含数百个表的数据库,我需要做的是导出指定的表并将数据的插入语句插入一个sql文件。 我知道的唯一可以实现这一目标的语句是 pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql 我应该为每个表运行此语句还是有一种方法可以运行类似的语句将所有选定的表导出到一个大sql big中。上面的pg_dump不会只导出表模式插入,我需要两个 任何帮助将不胜感激。
94 postgresql 



2
PL / pgSQL中的“ $$”是什么
对PL / pgSQL来说是全新的,此函数中双美元符号的含义是什么: CREATE OR REPLACE FUNCTION check_phone_number(text) RETURNS boolean AS $$ BEGIN IF NOT $1 ~ e'^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$' THEN RAISE EXCEPTION 'Wrong formated string "%". Expected format is +999 999'; END IF; RETURN true; END; $$ LANGUAGE plpgsql STRICT IMMUTABLE; 我猜在RETURNS boolean AS $$中$$是占位符。 最后一行有点神秘: $$ LANGUAGE …

5
如何将CSV文件中的标头从CSV文件复制到PostgreSQL表?
我想将CSV文件复制到Postgres表中。该表中大约有100列,因此,如果不需要,我不想重写它们。 我正在使用\copy table from 'table.csv' delimiter ',' csv;命令,但没有创建表,我得到了ERROR: relation "table" does not exist。如果我添加一个空白表,则不会出现任何错误,但是什么也不会发生。我尝试了两次或三次此命令,但没有输出或消息,但是当我通过PGAdmin检查表时,表并未更新。 有没有办法像我想要的那样导入包含标题的表?

5
如何一次将多个值插入Postgres表中?
我有一个表,我试图一次更新多个值。这是表模式: Column | Type | Modifiers ---------------+---------+----------- user_id | integer | subservice_id | integer | 我有user_id,想要subservice_id一次插入多个。有没有一种语法Postgres可以让我做这样的事情 insert into user_subservices(user_id, subservice_id) values(1, [1, 2, 3]); 我该怎么做?
93 postgresql 

5
Postgres:如何将json字符串转换为文本?
Json值可以包含一个字符串值。例如。: postgres=# SELECT to_json('Some "text"'::TEXT); to_json ----------------- "Some \"text\"" 如何提取该字符串作为postgres文本值? ::TEXT不起作用。它返回带引号的json,而不是原始字符串: postgres=# SELECT to_json('Some "text"'::TEXT)::TEXT; to_json ----------------- "Some \"text\"" 谢谢。 PS我正在使用PostgreSQL 9.3
93 json  postgresql 



5
org.postgresql.util.PSQLException:致命:抱歉,已经有太多客户端
我正在尝试连接到Postgresql数据库,出现以下错误: 错误:org.postgresql.util.PSQLException:致命:抱歉,已经有太多客户端 错误是什么意思,我该如何解决? 我的server.properties文件如下: serverPortData=9042 serverPortCommand=9078 trackConnectionURL=jdbc:postgresql://127.0.0.1:5432/vTrack?user=postgres password=postgres dst=1 DatabaseName=vTrack ServerName=127.0.0.1 User=postgres Password=admin MaxConnections=90 InitialConnections=80 PoolSize=100 MaxPoolSize=100 KeepAliveTime=100 TrackPoolSize=120 TrackMaxPoolSize=120 TrackKeepAliveTime=100 PortNumber=5432 Logging=1
93 java  sql  postgresql  jdbc 

12
来自Sql数据库的简单随机样本
如何在SQL中获取有效的简单随机样本?有关的数据库正在运行MySQL。我的表至少有200,000行,我想要一个大约10,000的简单随机样本。 “显而易见”的答案是: SELECT * FROM table ORDER BY RAND() LIMIT 10000 对于大表,这太慢了:它调用RAND()每一行(已经将它放在O(n)上),并对它们进行排序,使其充其量为O(n lg n)。有没有办法比O(n)更快地做到这一点? 注意:正如Andrew Mao在评论中指出的那样,如果在SQL Server上使用这种方法,则应该使用T-SQL函数NEWID(),因为RAND()可能对所有行返回相同的值。 编辑:5年后 我再次遇到了一个更大的表的问题,最终使用了@ignorant解决方案的一个版本,并进行了两次调整: 将行采样到我所需样本大小的2-5倍,以便宜的价格 ORDER BY RAND() 将结果保存RAND()到每次插入/更新的索引列中。(如果您的数据集不是很重更新,则可能需要寻找另一种方法来保持此列的更新。) 要获取一个表的1000个项目的样本,我对数据行进行计数,并使用Frozen_rand列对结果进行平均采样,平均减少到10,000行: SELECT COUNT(*) FROM table; -- Use this to determine rand_low and rand_high SELECT * FROM table WHERE frozen_rand BETWEEN %(rand_low)s AND %(rand_high)s ORDER BY RAND() …


9
在ON CONFLICT子句中使用多个flict_target
我在表中两列col1,col2他们都是独一无二的索引(COL1是唯一的,因此是COL2)。 我需要在此表中插入,使用ON CONFLICT语法并更新其他列,但不能在inconflict_target子句中同时使用这两列。 有用: INSERT INTO table ... ON CONFLICT ( col1 ) DO UPDATE SET -- update needed columns here 但是如何对几个列执行此操作,如下所示: ... ON CONFLICT ( col1, col2 ) DO UPDATE SET ....

16
如何删除重复的条目?
我必须向现有表添加唯一约束。很好,除了表已经有数百万行,而且许多行违反了我需要添加的唯一约束。 删除有问题的行的最快方法是什么?我有一条SQL语句,该语句查找重复项并将其删除,但要花很长时间才能运行。是否有另一种方法可以解决此问题?也许备份表,然后在添加约束后还原表?

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.