You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pgAdmin4执行含COPY FROM stdin的SQL文件时出现语法错误

解决pgAdmin4执行含COPY FROM stdin的SQL文件报错问题

问题原因

pgAdmin4的查询编辑器不支持COPY FROM stdin这种交互式数据输入语法。该语法是为命令行工具psql设计的,psql会等待用户从标准输入提供数据,但pgAdmin的编辑器是一次性解析执行所有SQL语句,无法处理后续的数据行,因此会把数据行误判为无效SQL语句触发报错。

解决办法

方法1:用psql命令行执行(推荐)

直接在终端/命令提示符中运行psql命令执行整个SQL文件,psql原生支持COPY FROM stdin格式:

psql -U 你的用户名 -d 目标数据库名 -f /path/to/你的导出文件.sql

替换命令中的用户名、数据库名和文件路径即可。

方法2:修改SQL文件适配pgAdmin

把COPY FROM stdin部分替换成INSERT语句或者COPY FROM本地文件的形式:

  • 换成INSERT语句:
    将原来的:
    COPY genres (id, name, created_at, updated_at) FROM stdin;
    1   Comedy  2022-09-23 00:00:00 2022-09-23 00:00:00
    \.
    
    修改为:
    INSERT INTO genres (id, name, created_at, updated_at)
    VALUES
    (1, 'Comedy', '2022-09-23 00:00:00', '2022-09-23 00:00:00'),
    -- 其他数据行按此格式依次追加
    ;
    
  • 换成COPY FROM本地文件:
    将数据单独保存为CSV文件(比如genres_data.csv),然后修改SQL语句为:
    COPY genres (id, name, created_at, updated_at) FROM '/path/to/genres_data.csv' WITH (FORMAT csv, DELIMITER E'\t', HEADER false);
    
    注意要确保PostgreSQL服务有权限访问该CSV文件,若权限受限可调整文件存储路径或修改权限配置。

方法3:检查SQL文件格式

如果导出的SQL文件中COPY的数据行分隔符异常(比如用空格代替了制表符),也可能触发报错。可以用文本编辑器打开文件,确认数据列之间是制表符分隔,且无多余的转义错误。

内容的提问来源于stack exchange,提问作者user63898

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:16:08