我不能使用删除数据库
dropdb
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ERROR: must be owner of database
Run Code Online (Sandbox Code Playgroud)
但是psql \l我看到用户管理员(删除数据库的那个)
admin=CTc/postgres
Run Code Online (Sandbox Code Playgroud)
除了我想删除的数据库。
Linux 中的 PostgreSQL 9.x 有什么问题?
我知道 PostgreSQL 检查点是什么以及它何时发生。
我需要一些有关log_checkpoints = on参数生成的日志的附加信息,因此请向我解释其中的一些要点:
2017-09-09 16:31:37 EEST [6428-6524] LOG: checkpoint complete: wrote 30057 buffers (22.9%); 0 transaction log file(s) added, 0 removed, 47 recycled; write=148.465 s, sync=34.339 s, total=182.814 s; sync files=159, longest=16.143 s, average=0.215 s
shared_buffers所以这意味着 234 MB 被写出)。质疑。但是write=148.465 s和sync=34.339呢?有什么不同?什么是write,为什么它的时间远远超过fsync()操作?
问题B。什么是sync files?哪些文件:WAL 文件?为什么sync files是159个,而回收的文件只有47个?它们之间有什么关系?
谢谢!
运行下面的命令,我得到“返回“记录”的函数需要一个列定义列表。
SELECT *
FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}');
ERROR: a column definition list is required for functions returning "record"
LINE 1: SELECT * FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}');
Run Code Online (Sandbox Code Playgroud)
没关系。我知道它想要什么。
SELECT *
FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}')
AS (a int, b int, c int, d int);
Run Code Online (Sandbox Code Playgroud)
此外,在 PostgreSQL 中,所有表都已经有一个以相同名称创建的类型。
CREATE TABLE foo(a,b,c,d)
AS VALUES
(1,2,3,4);
Run Code Online (Sandbox Code Playgroud)
这将创建一个foo链接到新创建的 table的内部类型foo。不过,我可以很容易地创建一个类似的类型bar。
CREATE TYPE bar AS (a int, b int, c int, d int);
Run Code Online (Sandbox Code Playgroud)
能够将返回的记录转换json_to_record()为 bar会很棒。
SELECT *
FROM json_to_record('{"a":1,"b":2,"c":3,"d":4}')
AS foo; -- bar? anything? …Run Code Online (Sandbox Code Playgroud) 我有一张这样的表:
create table foo (foo_label text, foo_price int, foo_date date);
insert into foo (
values
('aaa', 100, '2017-01-01'),
('aaa', NULL, '2017-02-01'),
('aaa', NULL, '2017-03-01'),
('aaa', NULL, '2017-04-01'),
('aaa', 140, '2017-05-01'),
('aaa', NULL, '2017-06-01'),
('aaa', 180, '2017-07-01')
);
Run Code Online (Sandbox Code Playgroud)
如您所见,foo_price列上的一些值丢失了。
我需要的是缺失值以这种方式用“前一个”可用值填充:
foo_label | fixed_foo_price | foo_date
-----------+-----------------+------------
aaa | 100 | 2017-01-01
aaa | 100 | 2017-02-01
aaa | 100 | 2017-03-01
aaa | 100 | 2017-04-01
aaa | 140 | 2017-05-01
aaa | 140 | 2017-06-01
aaa | 180 …Run Code Online (Sandbox Code Playgroud) 沿着这个相关问题的思路:
是否有任何有效的实际使用用例 TIME WITH TIME ZONE或应该将其视为反模式?
需要明确的是:我问的是TIME…,而不是TIMESTAMP…。
我正在做一个个人项目,我想在其中创建一个数据库,其中包含每个上市公司的每个所有者的信息。例如,说“Sears INC”,程序将获取“Sears INC”中每个所有者的信息。这就是想法。但是我很难构建这个数据库。我对这个主题只有有限的经验和知识,所以任何指导将不胜感激。
现在我首先考虑制作一个名为公司的表格,并为它们提供所有唯一的 ID,并为每个公司制作一张表格。然后在这些表中将是所有所有者及其唯一 ID。这将链接到他们的信息。我试图在这里形象化:
现在我知道为每个公司创建一个表会很乏味,但我想不出任何其他方法来做到这一点。众所周知,每个公司可能有相同的所有者,因此使用 Owner_ID 来识别每个所有者是有意义的。
我在一个 CVS 文件中有所有其他数据,在我构建了数据库之后,我可以很容易地将这些数据导入到 PostgreSQL 中。
任何帮助将不胜感激。
TL:博士;创建一个可按公司名称搜索的股票所有者数据库,并且需要帮助来构建数据库以实现最大效率。
一个人只能有一个电话和一个地址。公司也是如此,因为我制作了一个脚本,可以根据这些信息查找电话。我区分知道一个实体是公司还是个人的方法是使用名为 F_Org 的列,该列对于公司来说将大于 4 位数字。这一切都由脚本处理。
我有一个有点复杂的查询,它拆分字符串并将每个单词作为记录输出。
我做了一个快速测试,一个有 CTE,一个有子查询,看到 CTE 的执行时间是原来的两倍,我有点惊讶。
以下是查询功能的要点:
-- 1. translate matches characters from comment to given list (of symbols) and replaces them with commas.
-- 2. string_to_array splits string by comma and puts in an array
-- 3. unnest unpacks the array into rows
Run Code Online (Sandbox Code Playgroud)
SELECT
sub_query.word,
sub_query._created_at
FROM
( SELECT unnest(string_to_array(translate(nps_reports.comment::text, ' ,.<>?/;:@#~[{]}=+-_)("*&^%$£!`\|}'::text, ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'::text), ','::text, ''::text)) AS word,
nps_reports.comment,
nps_reports._id,
nps_reports._created_at
FROM nps_reports
WHERE nps_reports.comment::text <> 'undefined'::text
) sub_query
WHERE sub_query.word IS NOT NULL AND NOT (sub_query.word IN ( SELECT …Run Code Online (Sandbox Code Playgroud) 我运行一个如下所示的查询
WITH src AS (
...
)
SELECT MAX(field1), array_agg(field2)
FROM src
Run Code Online (Sandbox Code Playgroud)
我知道field1从 src 返回的所有行中都是相同的,所以我真的不在乎与它一起使用的聚合函数是MAX还是MIN. 在我的情况下field1是一个数组,所以我很好奇是否有更有效的方法来获取任何field1不包括将其与之前保存的 MIN/MAX 进行比较的开销的方法。如果有一个函数来获取第一个/保留最后一个值field1将是理想的。
我有以下 json 存储在 jsonb 字段中。对于代表产品的每条记录,它包含各种类别,每个类别中的 a 是优先级。
[
{
"priority": 0,
"description": "",
"categoryName": "Cars",
"title": ""
},
{
"priority": 1,
"description": "",
"categoryName": "Trucks",
"title": ""
},
{
"priority": 2,
"description": "",
"categoryName": "Vans",
"title": ""
}
]
Run Code Online (Sandbox Code Playgroud)
我想使用优先级字段动态地按各种类别对数据进行排序,这样,如果我显示类别 Cars 中的所有产品,我将按 0 数组元素排序,如果我显示类别 Vans 中的所有产品, 我按 2 数组元素排序。
目前,要按第一个数组元素排序,我可以这样做:
ORDER BY OBJECT_DATA->'productCategories'->0->>'priority'
Run Code Online (Sandbox Code Playgroud)
但是,我想通过首先选择数组值 ( categoryName) 然后使用数组值来选择其优先级来排序。
例如:按卡车排序->优先级 (1)
我正在使用 PostgresSQL 9.6。
我正在尝试在 Postgres 上使用 FTS 在数据库中查找字符串:
select name
from users
where to_tsvector('simple', name) @@ to_tsquery('simple', 'ad:*')
Run Code Online (Sandbox Code Playgroud)
但:*搜索只有以广告开头的词。
我发现这个问题 Get partial match from Get partial match from GIN indexed TSVECTORcolumn column。
但是没有提到如何使用FTS解决中后缀匹配的问题?
postgresql ×10
datatypes ×2
aggregate ×1
checkpoint ×1
count ×1
cte ×1
foreign-key ×1
json ×1
linux ×1
log ×1
maintenance ×1
null ×1
performance ×1
primary-key ×1
row ×1
time ×1
timezone ×1