我正在尝试在 RedShift 中提出请求:
INSERT INTO target.table AS t (
project_id,
project_number,
project_name,
connect_project_id,
project_desc,
project_type,
project_status,
project_path,
language_code,
country_code,
timezone,
project_created_at,
project_modified_at
)
SELECT
s.id,
s.number,
s.name,
s.connect_project_id,
s.description,
s.type,
s.status,
s.path,
s.language,
s.country,
s.timezone,
s.created,
s.modified
FROM source.table AS s
ON CONFLICT (project_id)
DO UPDATE SET
(project_number, project_name, connect_project_id, project_desc,
project_type, project_status, project_path, language_code,
country_code, timezone, project_created_at, project_modified_at,
date_updated) = (EXCLUDED.project_number,
EXCLUDED.project_name, EXCLUDED.connect_project_id,
EXCLUDED.project_desc, EXCLUDED.project_type, EXCLUDED.project_status,
EXCLUDED.project_path, EXCLUDED.language_code, EXCLUDED.country_code,
EXCLUDED.timezone, EXCLUDED.project_created_at,
EXCLUDED.project_modified_at, NOW())
WHERE
t.project_number != EXCLUDED.project_number
OR t.project_name != EXCLUDED.project_name
OR t.connect_project_id != EXCLUDED.connect_project_id
OR t.project_desc != EXCLUDED.project_desc
OR t.project_type != EXCLUDED.project_type
OR t.project_status != EXCLUDED.project_status
OR t.project_path != EXCLUDED.project_path
OR t.language_code != EXCLUDED.language_code
OR t.country_code != EXCLUDED.country_code
OR t.timezone != EXCLUDED.timezone
OR t.project_created_at != EXCLUDED.project_created_at
OR t.project_modified_at != EXCLUDED.project_modified_at;
但我收到一个错误:错误:“AS”位置或附近的语法错误:42
我不知道出了什么问题。也许有人知道?
我意识到 RedShift 不接受某些东西,例如 INSERT 中的 AS 或 ON CONFLICT。
所以我用以下内容替换了该查询:
我从官方 RedShift 文档中获取它。