我正在从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'
);
但它显示错误
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
答案 0 :(得分:3)
版本9.0中COPY
的语法相对于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的确切版本。
答案 1 :(得分:0)
SQL错误[42601]:错误:“(”位置或附近的语法错误:51
对我来说,原因是由于缺少列标题,例如没有中间名标题:
ID,名字,姓氏
使用标头更正CSV文件,并从列标头中删除保留的字符。