当我尝试在PostgreSQL中使用Reverse for循环时,似乎编译器无法识别单词'reverse'。它完全跳过了循环。
DO $$
BEGIN
RAISE NOTICE 'LOOP STARTING......' ;
FOR I IN REVERSE 1..10 LOOP
RAISE NOTICE 'INSIDE LOOP......' ;
RAISE NOTICE 'NUMBER IS %', I;
END LOOP;
END $$ ;
Run Code Online (Sandbox Code Playgroud)
输出
-------------------
注意:循环启动...
但是当我省略反向一词时,编译器可以正常工作。知道为什么会这样。
我正在使用PgAdmin版本1.20.0
我的函数只有一个参数carAzimuth。
CREATE OR REPLACE FUNCTION map.get_near_link(x numeric, y numeric, carAzimuth numeric)
Run Code Online (Sandbox Code Playgroud)
里面我有一些计算和这个查询
SELECT *
FROM map.vzla_seg S
WHERE
S.azimuth > carAzimuth - 30 and
S.azimuth < carAzimuth + 30 or
S.azimuth < carAzimuth - 330 or
S.azimuth > carAzimuth + 330;
Run Code Online (Sandbox Code Playgroud)
我想分析查询性能。所以我必须将变量替换为常量。并且工作正常,并向EXPLAIN PLAN我展示正在使用正确的索引。
EXPLAIN ANALYZE
SELECT *
FROM map.vzla_seg S
WHERE
S.azimuth > 345 - 30 and
S.azimuth < 345 + 30 or
S.azimuth < 345 - 330 or
S.azimuth > 345 + 330;
Run Code Online (Sandbox Code Playgroud)
但如果想测试不同的值,改变每个变量是很麻烦的。那么如果你尝试
EXPLAIN …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过pgadmin创建一个触发器,以便有一个计算列.
我需要这样做:c = a/b
我创建了一个函数UpdateC,它包含以下代码:
UPDATE table_name
SET c = a / b
WHERE id = @id
Run Code Online (Sandbox Code Playgroud)
我将@id声明为参数.
然后我想我会创建一个触发器并将它链接到该函数,但我发现我需要将它链接到触发器函数而不是函数.
现在我正在尝试使用与上面完全相同的SQL创建触发器函数,但是我收到了下一个错误:
"UPDATE"或其附近的语法错误
在定义选项卡下我必须选择一种语言,所以我选择了"plpgsql"(其他选项是"c"和"internal").
任何帮助将深表感谢!
我有几个*.sql转储文件,我想恢复到新创建的数据库'spatial_db'.我知道我可以通过命令行恢复它们:
psql -U username -h 127.0.0.1 -d spatial_db -f path/to/dump/file.sql
有没有办法通过pgAdmin恢复*.sql文件和*.backup文件一样?
在阅读官方网站以及进行Google研究后,我仍然不清楚pgAdmin和Postgres.app如何相互关联?
例如,我可以同时在pgAdmin和Postgres.app的不同端口上运行两个不同的本地postgres服务器,这很令人困惑.我认为这些应用程序彼此依赖,但似乎并非如此.
如何关闭 pgamin 输出窗口.. 我拖动/弹出 pgadmin 4 的输出窗口 .. 现在我无法将其关闭/合并回顶部图块。重新启动应用程序不起作用。看起来它记得我最后的动作
另外,我看到一个空白窗口。我正在使用 pgadmin4
我在 TimescaleDB(时间序列数据的 PostgreSQL 扩展)中创建了一个物化视图,当我使用来自 PGAdmin 的以下代码刷新它时,添加了最新数据并且一切正常:
REFRESH MATERIALIZED VIEW CONCURRENTLY
public.time_series_mv
WITH DATA;
Run Code Online (Sandbox Code Playgroud)
当我在 Python 中使用相同的用户 (postgres) 运行完全相同的代码时,它表示成功(即没有发生错误)但最新的数据实际上并未添加到物化视图中......
因此,我尝试创建一个函数来做同样的事情:
CREATE OR REPLACE FUNCTION refresh_time_series_mv()
RETURNS void
SECURITY DEFINER
AS $$
BEGIN
REFRESH MATERIALIZED VIEW CONCURRENTLY time_series_mv with data;
RETURN;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
然后我按如下方式运行该函数,同样,它在我的浏览器中从 PGAdmin 运行,但当我在我的调度应用程序中从 Python 运行相同的 SQL 时则不起作用。
select refresh_time_series_mv();
Run Code Online (Sandbox Code Playgroud)
这是我的 Python 代码:
import psycopg2
SQL1 = """
REFRESH MATERIALIZED VIEW CONCURRENTLY
public.time_series_mv
WITH DATA
"""
SQL2 = "select refresh_time_series_mv();"
host = os.getenv("HOST")
port = int(os.getenv("PORT")) …Run Code Online (Sandbox Code Playgroud) 我尝试配置 postgresql 以便能够“远程”连接到 pgadmin4 所以我在服务器中安装了 postgresql 版本 13,并且我尝试通过我的笔记本电脑访问它。
但为什么我总是出现错误,我刚刚更改了密码,然后在 pgadmin4 中输入用户名和密码,它仍然显示密码身份验证。
这是我的 pghba.conf 文件。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 trust …Run Code Online (Sandbox Code Playgroud) 我正在尝试将值插入到 postgres 的字段中。该字段中的数据类型是 float4。当我尝试向其中插入值时,值被截断,如下所示
value: 18754999.99, pgAdmin truncates to 18755000
Run Code Online (Sandbox Code Playgroud)
请问如何防止使用 float4 数据类型截断
pgadmin ×10
postgresql ×9
sql ×3
pgadmin-4 ×2
database ×1
for-loop ×1
performance ×1
postgres.app ×1
python ×1
reverse ×1
timescaledb ×1