我使用的是psycopg3和PostgreSQL 14。当我运行一个复制或exec函数并包含一个ON参数时,它会给出错误psycopg.errors.SyntaxError: syntax error at or near "ON"
我尝试了两个不同的函数,都导致了相同的错误。
cur.execute("""
CREATE TABLE temp_mls AS TABLE mls_properties WITH NO DATA
ON COMMIT DROP
""")和
cur.copy("""COPY mls_properties (fips_code") FROM STDIN
ON CONFLICT DO NOTHING
""")发布于 2022-09-21 18:19:07
在https://www.postgresql.org/docs/current/sql-copy.html中没有“冲突”这个词。
显然,ON COMMIT DROP应该在事务中扭曲。但是,它只适用于临时表。来自手册的报价
在承诺 事务块末尾的临时表的行为可以在提交时进行控制。这三种选择是: 保存行 在交易结束时不采取任何特别行动。这是默认行为。 删除行 临时表中的所有行将在每个事务块的末尾删除。本质上,在每次提交时都会进行自动截断。 丢弃 临时表将被删除在当前事务块的末尾。
因此,以下内容将发挥作用:
BEGIN;
CREATE temp TABLE temp_mls ON COMMIT DROP AS table test WITH NO DATA;
COMMIT;https://stackoverflow.com/questions/73803935
复制相似问题