相关疑难解决方法(0)

如何在PostgreSQL中使用(安装)dblink?

我已经习惯了Oracle并在我的架构中创建了一个dblink,然后访问了这样一个远程数据库:mytable@myremotedb那么对于PostgreSQL有没有相同的做法?

现在我正在使用这样的dblink:

SELECT logindate FROM dblink('host=dev.toto.com
                              user=toto
                              password=isok
                              dbname=totofamily', 'SELECT logindate FROM loginlog');
Run Code Online (Sandbox Code Playgroud)

当我执行此命令时,我收到以下错误:

提示:没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换.

有人有想法吗?我们是否必须"激活"dblinks或在使用它们之前做些什么?

我们要查询的远程数据库有什么问题吗?我们还要激活dblink吗?我一直都有could not establish connection.这是行类型:

SELECT dblink_connect_u('host=x.x.x.x dbname=mydb user=root port=5432');
Run Code Online (Sandbox Code Playgroud)

IP地址正确,Postgres正在远程服务器上运行.任何的想法?

sql postgresql dblink

56
推荐指数
4
解决办法
13万
查看次数

search_path如何影响标识符解析和"当前架构"

是否可以定义默认情况下创建新表的模式?(由"不合格的表名称"引用.)

我已经看到了在Postgres中使用"搜索路径"的一些细节,但我认为它只在检索数据时有效,而不是创建.

我有一堆SQL脚本,它们创建了许多表.我没有修改脚本,而是希望默认情况下在特定模式中设置数据库创建表 - 当它们具有非限定名称时.

这可能吗?

postgresql schema search-path database-table

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

计算行的NULL属性数

我想在表中添加一个新列,以记录每个元组(行)的值为null的属性数.如何使用SQL获取数字?

例如,如果元组是这样的:

Name | Age | Sex
-----+-----+-----
Blice| 100 | null
Run Code Online (Sandbox Code Playgroud)

我想更新元组,如下所示:

Name | Age | Sex | nNULL
-----+-----+-----+--------
Blice| 100 | null|  1
Run Code Online (Sandbox Code Playgroud)

另外,因为我正在编写PL/pgSQL函数并且表名是从参数获得的,所以我事先并不知道表的模式.这意味着我需要使用输入表名更新表.有人知道怎么做吗?

sql postgresql null count plpgsql

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

使用动态字段名称触发

我在更新表上创建PostgreSQL(9.3)触发器时遇到问题.我想在循环中设置新值

EXECUTE 'NEW.'|| fieldName || ':=''some prepend data'' || NEW.' || fieldName || ';';
Run Code Online (Sandbox Code Playgroud)

其中fieldName是动态设置的.但是这个字符串引发错误

ERROR:  syntax error at or near "NEW"
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?

postgresql triggers dynamic-sql plpgsql postgresql-9.3

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

如何使用扩展名pg_trgm中的%运算符?

我已经pg_trgm安装了模块。

pg_trgm | 1.0     | extensions | text similarity measurement and index ...
Run Code Online (Sandbox Code Playgroud)

模式集为extensions。要使用它,我必须运行以下选择:

extensions.similarity('hello','hallo');
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用%运算符运行一条语句,并收到以下消息。

mydb=# select * from rssdata where description % 'Brazil';
ERROR:  operator does not exist: character varying % unknown
LINE 1: select * from rssdata where description % 'Brazil';
                                            ^
HINT:  No operator matches the given name and argument type(s).
You might need to add explicit type casts. 
Run Code Online (Sandbox Code Playgroud)

运行%<->操作员需要什么?

sql postgresql pattern-matching search-path

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