如果我在这样的表中的行的列中有一个字符串
1 2 2 2 2 2 2
Run Code Online (Sandbox Code Playgroud)
我如何计算字符串2中子字符串的出现次数。假设除了空格分隔符 之外没有其他任何内容" "。
为此,我们将数字视为子字符串
CREATE TABLE foo
AS
SELECT 1 AS id, '1 2 2 2 2 2 2'::text AS data;
TABLE foo
id | data
----+---------------
1 | 1 2 2 2 2 2 2
Run Code Online (Sandbox Code Playgroud) 我的目标是创建现有数据库的副本,以便我创建新表并填充它们。我不关心对复制表的写入 - 这些可能而且可能应该抛出错误。
理想情况下,我想通过标准 postgresql 流复制来完成此任务,但由于这是不可能的(或者有办法做到这一点吗?)我可以使用经过实战测试和维护的扩展。最不理想的解决方案是自定义 ETL 流程。
复制的数据库将用于分析而不是实时操作,因此同步延迟是可以接受的。
这似乎是一个相当明显的用例,但我一直无法找到解决此问题的方法。
我正在使用 pgAdmin 4,并且希望将查询结果下载为INSERT语句而不是 CSV(我能找到的唯一选项)。我习惯用 MySQL Workbench 来做这件事,但也许我已经被宠坏了?
pgAdmin 4 是否可以将查询结果下载为INSERT语句?
我正在使用 PostgreSQL 9.2 并用于pg_dump创建数据库备份。我如何确定数据库备份和恢复正在进行中。这样我就可以阻止另一个用户启动另一个用户。
根据postgresql uuid-ossp文档uuid_generate_v1()是基于Mac地址+时间戳:
https://www.postgresql.org/docs/9.4/static/uuid-ossp.html
在分布式数据库场景中,我们有数百个数据库使用 UUID 键生成记录并同步回中央数据库。
假设我们检测到一台机器将来的日期/时间错误,我们将其改回正确的日期/时间。它可能会在此特定计算机上生成冲突的 UUID 密钥吗?
一种情况是夏令时/夏令时。
我已经多次使用这种技术在服务器之间传输数据库:
\n\npg_dump --no-owner -Fd mydb -j 4 -f tmp/mydb\nscp -r tmp/mydb otherserver:tmp/\nRun Code Online (Sandbox Code Playgroud)\n\n然后在另一台服务器中:
\n\ndropdb --if-exists mydb && \ncreatedb -T template0 mydb && \npg_restore -j 4 -d mydb tmp/mydb && \nrm -rf tmp/mydb\nRun Code Online (Sandbox Code Playgroud)\n\n它运行完美。\n使用 Postgres 9.3.16 和 CentOS 7。
\n\n但现在,在新服务器中,pg_restore 抱怨:
\n\npg_restore: [archiver] parallel restore is not supported with this archive file format\nRun Code Online (Sandbox Code Playgroud)\n\n我可以删除该-j 4参数,但理论上它应该是有效的。\n根据pg_restore 文档:
\n-j 作业数\n --jobs=作业数
\n\n运行 pg_restore \xe2\x80\x94 中最耗时的部分,这些部分使用多个并发作业加载\n 数据、创建索引或创建约束 \xe2\x80\x94。此选项可以显着减少将大型数据库恢复到多处理器计算机上运行的服务器的时间。
\n\n每个作业都是一个进程或一个线程,具体取决于操作系统,并使用与服务器的单独连接。 …
我有一个这样的表:
CREATE TABLE my_data (label text, value integer, date date);
INSERT INTO my_data (label, value, date) VALUES
('AAA', 10, '2014-06-01'),
('AAA', 30, '2014-09-01'),
('AAA', 40, '2014-10-01'),
('AAA', 50, '2015-02-01'),
('BBB', 20, '2014-11-01'),
('BBB', 10, '2015-02-01'),
('BBB', 70, '2015-04-01');
Run Code Online (Sandbox Code Playgroud)
我需要以这种方式填写缺失的日期(想象一个时间序列):
label | value | date
------+-------+------------
AAA | 10 | 2014-06-01
AAA | 10 | 2014-07-01
AAA | 10 | 2014-08-01
AAA | 30 | 2014-09-01
AAA | 40 | 2014-10-01
AAA | 40 | 2014-11-01
AAA | 40 | 2014-12-01 …Run Code Online (Sandbox Code Playgroud) 对于运行连接池和负载平衡但没有查询缓存的专用 PGPool 机器,建议使用多少物理内存?
我看到了;num_init_children(96) * max_pool(2) * number_of_backends(2) = 384中的线条 SHOW pool_pools每个 PID 的模态平均值似乎约为 99M,有几个 1G 异常值
# top for 20 pgpool processes
$ top -p $(pgrep pgpool | head -20 | tr "\\n" "," | sed 's/,$//')
Tasks: 20 total, 0 running, 20 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.1 us, 4.0 sy, 0.0 ni, 92.2 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st
KiB Mem : 1784080 total, 22068 free, 1629960 used, 132052 buff/cache …Run Code Online (Sandbox Code Playgroud) 例如:
create type t1 as (a int2, b text, c boolean);
create type t2 as (a t1, b boolean);
create type t3 as (a t2, b int4);
Run Code Online (Sandbox Code Playgroud)
现在,如何对 t3 类型的变量 x 执行以下操作:
x.a.a.c := true;
y := x.a.a.c;
Run Code Online (Sandbox Code Playgroud)
第一个给了我一个错误。
我有一个大表(审计),其中存储架构和表的关系 ID。这可以通过触发器使用 TG_RELID 方便地填充。它也很方便,因为我可以对它建立索引,并且索引会比我单独存储“模式”(文本)和“表”(文本)列并对它们建立索引要小。另外,我可以使用它进行查询WHERE relation_id = 'myschema:mytable'::regclass,它就可以工作。
我的问题是,这在备份/恢复方面是否“安全”(schema.table 在目标服务器中是否具有与源服务器中相同的 regclass/oid ?
我还应该注意其他问题吗?