小编Séb*_*ent的帖子

PostgreSQL 中 pg_catalog 表的外键

是否可以有一个外键指向系统目录(pg_catalog)表的字段?

当我尝试以下操作时:

ALTER TABLE my_table ADD CONSTRAINT fk_my_table FOREIGN KEY (role_name) REFERENCES pg_roles(rolname) ON UPDATE CASCADE;
Run Code Online (Sandbox Code Playgroud)

我得到:

ERROR:  referenced relation "pg_roles" is not a table
Run Code Online (Sandbox Code Playgroud)

sql postgresql

6
推荐指数
1
解决办法
1720
查看次数

pg_dump 没有对对象的评论?

有没有办法执行 pg_dump 并排除表/视图和列的 COMMENT ON ?

我广泛使用 COMMENT ON 命令来描述所有对象,并且经常在其中包含换行符以获得更清晰的描述,例如:

COMMENT ON TABLE mytable1 IS 'MAIN TABLE...
NOTES:
1. ...
2. ...
3. ...
';
Run Code Online (Sandbox Code Playgroud)

但是,由于转储中也有换行符,我不能简单地使用 grep -v 'COMMENT ON' 命令删除注释。

还有其他方法可以从转储中快速删除这些 COMMENT ON 吗?

postgresql pg-dump

5
推荐指数
2
解决办法
3984
查看次数

从 PostgreSQL 中的所有对象中删除 COMMENT ON

pg_dump 一样没有对对象的评论?, 有没有人知道一个命令可以一次快速删除COMMENT ON所有对象上的注释(创建于)?

现在,我求助于 bash 生成一个 SQL 脚本,该脚本会一个一个地取消每个表/视图/列上的注释,但速度很慢,尤其是 > 4000 列。
例子:

COMMENT ON COLUMN table1.column1 IS NULL;
COMMENT ON COLUMN table1.column2 IS NULL;
COMMENT ON COLUMN table1.column3 IS NULL;
...
Run Code Online (Sandbox Code Playgroud)

postgresql ddl

5
推荐指数
1
解决办法
3368
查看次数

How to use backreferences beyond 9 in a PostgreSQL regular expression?

The following regex simply extracts a part of the matched text using the backreferencing numbers:

SELECT regexp_replace('ABCDEFGHIJ','(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)','\2');
B
Run Code Online (Sandbox Code Playgroud)

But how to backreference beyond the ninth matched substring?

The following won't work (returns the first match + 0), neither will the use of $10 or ${10}:

SELECT regexp_replace('ABCDEFGHIJ','(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)','\10')
A0
Run Code Online (Sandbox Code Playgroud)

Note: this example was simplified for clarity, and would of course not necessitate going beyond backreference 9.

regex postgresql

5
推荐指数
1
解决办法
955
查看次数

如何使awk gsub返回制表符分隔的行?

我使用awk gsub替换制表符分隔文件的特定列中的字符串:

cat test.txt 
1   1   2032    1
2   1   2032    2
3   1   999 3
4   1   2032    4
5   1   9999    5
Run Code Online (Sandbox Code Playgroud)

但是,即使指定了-F“ \ t”,修改后的行也由空格分隔:

awk -F "\t" '{gsub(/^999$/,"XXX",$3);print}' test.txt
1   1   2032    1
2   1   2032    2
3 1 XXX 3
4   1   2032    4
5   1   9999    5
Run Code Online (Sandbox Code Playgroud)

如何将修改后的行也用制表符分隔?

awk tabs spaces separator gsub

4
推荐指数
1
解决办法
1877
查看次数

如何使用pg_archivecleanup按文件年龄或日期指定清理

有没有办法按年龄或日期而不是硬编码名称指定文件来使用pg_archivecleanup命令清理WAL档案?

例如,使用以下命令非常简单:

pg_archivecleanup "C:\Program Files\PostgreSQL\9.2\data\pg_xlog" 000000010000004600000045
Run Code Online (Sandbox Code Playgroud)

其中000000010000004600000045是文件名,之前创建的任何文件都将被删除.

但是,如果我想自动化该过程,必须有一种方法来按年龄/日期选择文件.

postgresql wal

2
推荐指数
2
解决办法
1万
查看次数

Windows 7下的PostgreSQL pg_ctl注册错误

在Windows 7,PostgreSQL 9.3.2下,我试图在同一服务器上使用不同的端口号和数据目录将PostgreSQL的第二个实例注册为服务.使用initdb命令在C:\ Program Files\PostgreSQL\9.3\data2下成功创建了第二个集群.

当我从C:\ Program Files\PostgreSQL\9.3\bin运行以下pg_ctl register命令时,收到一条错误消息:

pg_ctl register -N postgresql9.2_2nd_cluster -U "NT AUTHORITY\NetworkService" -D "C:\Program Files\PostgreSQL\9.3\data2" -S auto -o "-p 5431"

pg_ctl: could not open service manager
Run Code Online (Sandbox Code Playgroud)

我用Google搜索,但没有太大的成功.

windows postgresql service

1
推荐指数
1
解决办法
4345
查看次数

标签 统计

postgresql ×6

awk ×1

ddl ×1

gsub ×1

pg-dump ×1

regex ×1

separator ×1

service ×1

spaces ×1

sql ×1

tabs ×1

wal ×1

windows ×1