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

使用pgAdmin 4导入CSV时遇'malformed range literal'错误求助

问题原因与解决方案

核心错误原因

你把started_at和ended_at定义成了tsrange(时间范围类型),但CSV里的对应值是单个时间点(比如2023-08-01 00-00),完全不符合tsrange的格式要求:

  • tsrange需要的是包含起始、结束的范围格式,比如[2023-08-01 00:00:00, 2023-08-01 01:00:00)
  • 同时你的CSV时间格式还存在错误:00-00应该是00:00(用冒号分隔时分)

另外你的表结构里还有两个拼写错误,建议一并修正:

  • rieable_type → 应为rideable_type
  • start_staion_id → 应为start_station_id

修复步骤

  1. 修改表结构的列类型:把started_at和ended_at从tsrange改成单个时间戳类型,根据业务需求选择timestamp(无时区)或timestamptz(带时区):
CREATE TABLE IF NOT EXISTS public.aug2023_trip
(
    ride_id character varying(100) COLLATE pg_catalog."default",
    rideable_type character varying(100) COLLATE pg_catalog."default",
    started_at timestamp,
    ended_at timestamp,
    ride_length time without time zone,
    day_of_week smallint,
    start_station_name character varying(100) COLLATE pg_catalog."default",
    start_station_id character varying(100) COLLATE pg_catalog."default",
    end_station_name character varying(100) COLLATE pg_catalog."default",
    end_station_id character varying(100) COLLATE pg_catalog."default",
    start_lat numeric,
    start_lng numeric,
    end_lat numeric,
    end_lng numeric,
    member_casual character varying(50) COLLATE pg_catalog."default"
)
TABLESPACE pg_default;

ALTER TABLE IF EXISTS public.aug2023_trip
    OWNER to postgres;
  1. 修正CSV里的时间格式:把所有类似2023-08-01 00-00的内容改成2023-08-01 00:00,确保是PostgreSQL能识别的标准时间戳格式。

  2. 关于ride_length的优化建议:如果ride_length是通过started_at和ended_at计算出来的时长,建议不要提前存在CSV里,而是导入数据后用SQL计算生成:

UPDATE public.aug2023_trip
SET ride_length = ended_at - started_at;

这样可以避免数据冗余和计算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:50:06