【问题标题】:syntax error at or near "(" COPY FROM WITH ( FORMAT csv, DELIMITER E'\t', QUOTE '*', HEADER false, ENCODING 'UTF8')"(" COPY FROM WITH ( FORMAT csv, DELIMITER E'\t', QUOTE '*', HEADER false, ENCODING 'UTF8') 处或附近的语法错误
【发布时间】:2013-12-30 23:16:57
【问题描述】:

我正在从 txt 文件导入数据 这是桌子

CREATE TABLE test.geonames_load(geonameid INTEGER PRIMARY KEY,
  name VARCHAR(200),
  asciiname VARCHAR(200),
  alternatenames VARCHAR,
  latitude FLOAT8,
  longitude FLOAT8,
  feature_class char(1),
  feature_code VARCHAR(10),
  country_code VARCHAR(2), 
  cc2 VARCHAR(60),
  admin1 VARCHAR(20),
  admin2 VARCHAR(80),
  admin3 VARCHAR(20),
  admin4 VARCHAR(20),
  population INTEGER,
  elevation INTEGER,
  dem INTEGER,
  timezone VARCHAR(40),
  modification VARCHAR(18)
);

在我尝试从 txt 文件复制之后

COPY test.geonames_load FROM 'C:Program Files/PostgreSQL/8.4/data/US/US.txt' WITH (
  FORMAT csv,
  DELIMITER E'\t',
  QUOTE '*',
  HEADER false,
  ENCODING 'UTF8'
);

但它显示了一个错误

错误:“(”处或附近的语法错误 第 1 行:... FROM 'C:Program Files/PostgreSQL/8.4/data/US/US.txt' WITH ( ^ ********** 错误 ********** 错误:“(”处或附近的语法错误 SQL 状态:42601 性格:83

【问题讨论】:

  • 您在C:Program Files/P... 上缺少一个/,它应该是C:/Program Files/P

标签: postgresql


【解决方案1】:

与 8.4 相比,COPY 的语法在 9.0 版本中发生了很大变化

假设您使用的是 8.4 版,基于此 .../PostgreSQL/8.4/... 路径, 此处记录了适用的语法:

http://www.postgresql.org/docs/8.4/static/sql-copy.html

并且它不允许在 9.0 中出现的 WITH 关键字后面加上任何括号,也不允许在 9.1 中出现的 ENCODING 选项

您似乎需要根据您的 PostgreSQL 确切版本调整该语句。

【讨论】:

    【解决方案2】:

    SQL 错误 [42601]:错误:“(”位置或附近的语法错误:51

    对我来说,原因是缺少列标题,例如没有中间名标题:

    ID、名字、姓氏

    使用标题更正 CSV 文件并从列标题中删除保留字符已修复它。

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 1970-01-01
      • 2023-02-02
      • 2020-01-03
      • 2019-01-20
      • 2018-08-21
      • 2018-01-26
      • 2014-04-26
      • 1970-01-01
      相关资源
      最近更新 更多