我有一个简单的表格(id和name列,都是唯一的),我正在导入一个制表符分隔的CSV文件。
我正在运行psql 9.5,并想尝试使用新的ON CONFLICT
功能,如果ID已经存在,则更新name列。
CREATE TEMP TABLE tmp_x AS SELECT * FROM repos LIMIT 0;
COPY tmp_x FROM '/Users/George/git-parser/repo_file' (format csv, delimiter E'\t');
INSERT INTO repos SELECT * FROM tmp_x
ON CONFLICT(name) DO UPDATE SET name = tmp_x.name;
DROP TABLE tmp_x;
我遇到了这个错误:
SELECT 0
COPY 1
ERROR: missing FROM-clause entry for table "tmp_x"
LINE 4: ON CONFLICT(name) DO UPDATE SET name = tmp_x.name;
^
Query failed
PostgreSQL said: missing FROM-clause entry for table "tmp_x"
我不太确定这里出了什么问题。
ON CONFLICT DO NOTHING
(虽然我理解 OP 可能不想这样做)。 - dwelle