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

执行SQL脚本遇unterminated quoted string等错误,寻求技术协助

解决PostgreSQL执行脚本时的单引号及语法错误问题

嘿,我来帮你搞定这个问题!你遇到的报错其实是两个问题叠加导致的:一是执行脚本的命令里单引号没正确转义,二是SQL脚本本身也存在语法错误。咱们一步步来解决:

一、修复执行命令的问题

你用的命令 \i c:/users/public/giro_d'italia2014.sql 里,路径中的单引号 ' 被psql当成了字符串的起始标记,但后面没有匹配的结束单引号,所以触发了 unterminated quoted string 和 \i: missing required argument 错误。

解决方法有两种,选一种就行:

  • 方法1:用双引号把整个路径包裹起来:
    \i "c:/users/public/giro_d'italia2014.sql"
    
  • 方法2:把路径里的单引号转义成两个连续的单引号(PostgreSQL里用两个单引号表示一个字面单引号):
    \i c:/users/public/giro_d''italia2014.sql
    

二、修复SQL脚本的语法错误

即使命令改对了,你的原始脚本也跑不通,因为有几个明显的语法问题,我已经帮你修正并标注了修改点:

修正后的完整脚本

-- 1. 用双引号包裹带单引号的schema名,避免标识符解析错误
DROP SCHEMA IF EXISTS "giro_d'italia2014" CASCADE;
CREATE SCHEMA "giro_d'italia2014";
SET search_path TO "giro_d'italia2014";

-- 2. 修正列名:把"nome ciclista"改为规范的下划线命名(如果坚持用空格,写成"nome ciclista"也可以)
CREATE TABLE ciclista(
    id_ciclista INTEGER PRIMARY KEY,
    nome_ciclista VARCHAR,
    squadra CHAR(3),
    nazione CHAR(3)
);

-- 3. 创建枚举类型替代原脚本中不合法的集合写法,限制tipologia列的可选值
CREATE TYPE tipologia_tappa AS ENUM (
    'pianeggiante', 
    'alta montagna', 
    'media montagna', 
    'cronometro a squadre', 
    'cronometro individuale', 
    'cronoscalata'
);

CREATE TABLE tappa(
    nome_tappa VARCHAR PRIMARY KEY,
    km INT,
    tipologia tipologia_tappa
);

-- 4. 可选但推荐:添加外键约束,确保数据关联的完整性
CREATE TABLE ordine_arrivo(
    id_ciclista INT,
    nome_tappa VARCHAR,
    ordine INT,
    PRIMARY KEY (id_ciclista, nome_tappa),
    FOREIGN KEY (id_ciclista) REFERENCES ciclista(id_ciclista),
    FOREIGN KEY (nome_tappa) REFERENCES tappa(nome_tappa)
);

关键修改说明

  • 带特殊字符的标识符:PostgreSQL中如果标识符(比如schema名、列名)包含单引号、空格等特殊字符,必须用双引号包裹,否则会被解析成语法错误;
  • 列名错误:原脚本里的nome ciclista是无效列名(除非用双引号包裹),改成nome_ciclista更符合SQL命名规范;
  • 自定义类型:原脚本中tipologia列的集合写法{'xxx'|'xxx'}不是PostgreSQL支持的语法,用枚举类型(ENUM)可以完美实现“限制列值只能是指定选项”的需求;
  • 外键约束:给ordine_arrivo表添加外键,确保只能插入存在的车手和赛段数据,避免无效数据。

按照上面的步骤修改后,再执行脚本应该就能正常运行了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:26:10