我timestamp without time zone default now()在 PostgreSQL 数据库中有一个类型为“创建”的列。
如果我选择 colums,默认情况下它有一个漂亮且可读的格式:
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
Run Code Online (Sandbox Code Playgroud)
但我想在几毫秒内获得时间戳(作为一个 Long)。像这样的东西:
SELECT myformat(created) FROM mytable;
created
-----------------
2432432343876944
Run Code Online (Sandbox Code Playgroud)
如何仅在几毫秒内从 PostgreSQL 获取时间戳列?
回复杰克:
我确实得到与您相同的差异(-3600),但是如果我使用timestamp with time zone我可以看到“错误”或差异是因为 '1970-01-01' 获得 time zone +01。
create table my_table_2(created timestamp with time zone);
CREATE TABLE
insert into my_table_2 (created) values (now()), ('1970-01-01');
INSERT 0 2
select created, extract(epoch from created) from my_table_2;
created | date_part
-------------------------------+------------------
2011-05-18 11:03:16.909338+02 | 1305709396.90934
1970-01-01 …Run Code Online (Sandbox Code Playgroud) 角色存储在集群中的什么位置,如何转储它们?
我做了一个 db 的 pg_dump 然后将它加载到不同的集群中,但我收到了很多这些错误:
psql:mydump.sql:3621: ERROR: role "myrole" does not exist
Run Code Online (Sandbox Code Playgroud)
所以显然我的数据库的转储不包括角色。我尝试转储“postgres”数据库,但我也没有看到那里的角色。
我需要使用pg_dumpall --roles-only吗?
Postgresql 版本 8.4.8 和 9.1.4 操作系统:Ubuntu 11.04 Natty
有没有办法找出知道为表创建哪些索引的最佳方法?
我正在使用基于开源 (RHEL 6.2) 的机器运行 SIEM 软件。当我运行该top命令时,我看到postgres和postmaster两者的 CPU 使用率都为 96%。有没有办法确定或查看导致这些服务堆积的原因?
我有一个运行 postgreSQL 的 IP 地址为 192.168.0.192 的虚拟机。
如果我指定
listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)
然后我可以从位于 192.168.0.191 的另一个虚拟机和本地主机连接。
但是我似乎无法使用列表来告诉postgreSQL 使用这两个地址。如果我将 listen_addresses 更改为列表:
listen_addresses = '192.168.0.191, localhost'
Run Code Online (Sandbox Code Playgroud)
然后我无法再从 192.168.0.191 连接。
我注意到 stackexchange 上的几乎所有示例都将 listen_addresses 设置为“*”。这是因为列表形式不起作用吗?
我很清楚我的 SELECT...INTO 查询将实际处理多少行(例如,我知道有多少行会实现)。
我知道 Postgres 不会告诉我百分比完整性,有没有办法(深埋在日志、系统表或其他地方)我可以找出有多少行已被泵入目标表或已被 SELECT 查询读取?
用于添加新数据库连接的 pgAdmin 对话框要求“维护数据库”。
为了能够连接,我将它设置为我想要连接的数据库(而且,我有连接的权限)。
那么,为什么它被命名为“维护数据库”而不是“数据库”或“数据库”?。
我是 PostgreSQL 的新手,一般来说对数据库有点陌生。我们应该如何在 Postgres 中索引UUID值,是否有既定的方法?我分为使用散列和使用特里树,除非已经有内置的东西可以自动使用。无论我使用什么,都将处理大量数据。
SP-GiST 运算符族“text_ops”使用树索引。因为 UUID 很长而且非常不同,所以即使我只会进行完整匹配搜索,这些听起来也很吸引人。
还有一个哈希选项。散列是 O(1),当然除了相等我不需要做任何比较,但是因为 UUID 很长,我担心从它们生成散列会浪费很多时间。
或者这是否过于依赖系统和使用细节?
在大多数情况下,我宁愿使用bigserial,但有人告诉我为此使用uuid。我们需要uuid,因为我们可能有多个服务器使用不同的数据库,因此不能保证我们将拥有唯一的 bigint。我们可以为每个服务器使用不同的序列(和种子),但它仍然不如 UUID 灵活。例如,如果不转换 ID 及其引用,我们将无法将数据库条目从一台服务器迁移到另一台服务器。
我只想知道如何安装在 trigram 索引方案中使用的模块pg_tgrm,该方案允许您在索引上执行非锚定搜索模式。
WHERE foo LIKE '%bar%';
Run Code Online (Sandbox Code Playgroud) postgresql index installation postgresql-9.3 postgresql-extensions
我们使用的是 PostgreSQL v8.2.3。
涉及的表有:EMPLOYEE和EMAILLIST。
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
Run Code Online (Sandbox Code Playgroud)
2 个表以这样的方式连接,如果 EMPLOYEE.EMAIL1 或 EMPLOYEE.EMAIL2 没有匹配的条目,则将返回这些行。
SELECT employee.email1, employee.email2,
e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched
FROM employee
LEFT JOIN emaillist e1 ON e1.email = employee.email1
LEFT JOIN emaillist e2 ON e2.email = employee.email2
WHERE e1.email IS NULL OR e2.email IS NULL
Run Code Online (Sandbox Code Playgroud)
列EMAIL是VARCHAR(256)的EMAILLIST表索引。现在,响应时间是 14 秒。
表数统计:目前EMPLOYEE有165,018条记录,EMAILLIST有1,810,228条记录,未来两个表都有望增长。
postgresql ×10
index ×3
date-format ×1
dump ×1
index-tuning ×1
installation ×1
performance ×1
pgadmin ×1
query ×1
restore ×1
role ×1
timestamp ×1
uuid ×1