postgresql “(” COPY FROM WITH ( FORMAT csv, DELIMITER E'\t', QUOTE '*', HEADER false, ENCODING 'UTF8') 处或附近的语法错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20545296/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-21 01:13:43  来源:igfitidea点击:

syntax error at or near "(" COPY FROM WITH ( FORMAT csv, DELIMITER E'\t', QUOTE '*', HEADER false, ENCODING 'UTF8')

postgresql

提问by Badr4si

I'm Importing data from a txt file This is the table

我正在从 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)
);

After I tried to copy from a txt file

在我尝试从 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'
);

But it shows me an Error

但它向我显示了一个错误

ERROR: syntax error at or near "("
LINE 1: ... FROM 'C:Program Files/PostgreSQL/8.4/data/US/US.txt' WITH (
                                                                      ^
********** Error **********

ERROR: syntax error at or near "("
SQL State: 42601
Character: 83

采纳答案by Daniel Vérité

The syntax of COPYhas changed quite a bit in version 9.0 compared to 8.4

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

Assuming you're using version 8.4, based on this .../PostgreSQL/8.4/...path, the syntax that applies is documented here:

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

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

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

And it does not allow any parenthesis after the WITHkeyword that appeared in 9.0, nor the ENCODINGoption that appeared in 9.1

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

It looks like you need to adapt the statement to your exact version of PostgreSQL.

看起来您需要使语句适应您的 PostgreSQL 的确切版本。