【问题标题】:Importing csv file using COPY FROM on Mac在 Mac 上使用 COPY FROM 导入 csv 文件
【发布时间】:2022-01-10 21:14:13
【问题描述】:

使用 pgAdmin4 应用程序中的查询编辑器,我想将数据从 csv 文件导入到表中。我的代码如下:

CREATE DATABASE gps_tracking_db
    ENCODING = 'UTF8'
    TEMPLATE = template0
    LC_COLLATE = 'C'
    LC_CTYPE = 'C';
    
CREATE SCHEMA main;

COMMENT ON SCHEMA main IS 'Schema that stores all the GPS tracking core data.';

CREATE TABLE main.gps_data(
    gps_data_id serial,
    gps_sensors_code character varying,
    line_no integer,
    utc_date date,
    utc_time time without time zone,
    lmt_date date,
    lmt_time time without time zone,
    ecef_x integer,
    ecef_y integer,
    ecef_z integer,
    latitude double precision,
    longitude double precision,
    height double precision,
    dop double precision,
    nav character varying(2),
    validated character varying(3),
    sats_used integer,
    ch01_sat_id integer,
    ch01_sat_cnr integer,
    ch02_sat_id integer,
    ch02_sat_cnr integer,
    ch03_sat_id integer,
    ch03_sat_cnr integer,
    ch04_sat_id integer,
    ch04_sat_cnr integer,
    ch05_sat_id integer,
    ch05_sat_cnr integer,
    ch06_sat_id integer,
    ch06_sat_cnr integer,
    ch07_sat_id integer,
    ch07_sat_cnr integer,
    ch08_sat_id integer,
    ch08_sat_cnr integer,
    ch09_sat_id integer,
    ch09_sat_cnr integer,
    ch10_sat_id integer,
    ch10_sat_cnr integer,
    ch11_sat_id integer,
    ch11_sat_cnr integer,
    ch12_sat_id integer,
    ch12_sat_cnr integer,
    main_vol double precision,
    bu_vol double precision,
    temp double precision,
    easting integer,
    northing integer,
    remarks character varying
);

COMMENT ON TABLE main.gps_data
IS 'Table that stores raw data as they come from the sensors (plus the ID of
the sensor).';

ALTER TABLE main.gps_data
    ADD CONSTRAINT gps_data_pkey
    PRIMARY KEY(gps_data_id);

ALTER TABLE main.gps_data
    ADD COLUMN insert_timestamp timestamp with time zone
    DEFAULT now();
    
ALTER TABLE main.gps_data
    ADD CONSTRAINT unique_gps_data_record
    UNIQUE(gps_sensors_code, line_no); /*what does line_no mean?*/
    
COPY main.gps_data(
    gps_sensors_code, line_no, utc_date, utc_time, lmt_date, lmt_time, ecef_x,
    ecef_y, ecef_z, latitude, longitude, height, dop, nav, validated, sats_used,
    ch01_sat_id, ch01_sat_cnr, ch02_sat_id, ch02_sat_cnr, ch03_sat_id,
    ch03_sat_cnr, ch04_sat_id, ch04_sat_cnr, ch05_sat_id, ch05_sat_cnr,
    ch06_sat_id, ch06_sat_cnr, ch07_sat_id, ch07_sat_cnr, ch08_sat_id,
    ch08_sat_cnr, ch09_sat_id, ch09_sat_cnr, ch10_sat_id, ch10_sat_cnr,
    ch11_sat_id, ch11_sat_cnr, ch12_sat_id, ch12_sat_cnr, main_vol, bu_vol,
    temp, easting, northing, remarks)
FROM
    '/Users/CDDEP/Downloads⁩/Urbano 2014/⁩tracking_db⁩/data⁩/sensors_data⁩/GSM01438.csv'
    WITH (FORMAT csv, HEADER, DELIMITER ';')

但是,当我运行 CREATE FROM 命令时,返回以下错误消息:

错误:无法打开文件“/Users/CDDEP/Downloads/Urbano 2014/tracking_db/data/sensors_data/GSM01438.csv”进行阅读:没有这样的文件或目录 提示:COPY FROM 指示 PostgreSQL 服务器进程读取文件。您可能需要一个客户端工具,例如 psql 的 \copy。 SQL 状态:58P01

我想知道这个错误是否是由于 Mac 文件路径的格式问题或其他原因造成的。

【问题讨论】:

  • 您是否按照提示进行操作? /Users/CDDEP/Downloads⁩/Urbano 2014/⁩tracking_db⁩/data⁩/sensors_data⁩/GSM01438.csv 是否存在于运行 服务器 的机器上?服务器进程是否可读?
  • 选项 1) 在查询编辑器中执行COPY 命令之前的所有操作,然后使用Import/Export 导入数据。 2) 使用psql 运行脚本并使用\copy 而不是COPY
  • 谢谢!我会尽快尝试并报告。我尝试使用相同的文件路径在 R 中导入 csv 并且没有问题。

标签: postgresql filepath pgadmin-4 import-csv


【解决方案1】:
  1. 确保文件/Users/CDDEP/Downloads⁩/Urbano 2014/⁩tracking_db⁩/data⁩/sensors_data⁩/GSM01438.csv确实存在

  2. COPY main.gps_data 替换为\COPY main.gps_data 以使用客户端实用程序

【讨论】:

  • 这行不通,\copy 是一个psql 命令,在pgAdmin4 查询编辑器中不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2017-06-26
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
相关资源
最近更新 更多