语法错误"("或接近 复制自 WITH(格式 csv、分隔符 E'\t'、引号'*'、标头 false、编码'UTF8')



我正在从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:程序文件/PostgreSQL/8.4/data/US/US.txt'WITH(^**********错误**********错误:"("处或附近有语法错误SQL状态:42601字符:83

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

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

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

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

看起来您需要根据PostgreSQL的确切版本调整该语句。

SQL错误[42601]:错误:"处或附近的语法错误;("位置:51

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

ID,FirstName,,Surname

更正带有标题的CSV文件并从列标题中删除保留字符将其修复。

最新更新