- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Netezza 中使用 if not exists 语句时遇到问题。我试图先检查记录是否不存在然后插入其他更新记录。我找不到在 Netezza 中执行此操作的更好方法。这是我有但不起作用的:
IF NOT EXISTS(SELECT ID FROM OLD_TABLE WHERE ID NOT IN (SELECT ID FROM NEW TABLE ) )
INSERT INTO NEW_TABLE (NAME, LOCATION)
ELSE
UPDATE NEW_TABLE
SET NAME = X.NAME
FROM (SELECT NAME, LOCATION FROM OLD_TABLE)AS X
WHERE X.NAME = NEW_TABLE.NAME
最佳答案
假设您提供了一个 ID 并希望使用 old_table
中的值对 new_table
中的单行进行 UPSERT。我正在使用 data-modifying CTE ,这需要 Postgres 9.1 或更高版本:
WITH input AS (SELECT 123 AS id)
, upd AS (
UPDATE new_table n
SET name = o.name
, location = o.location
FROM old_table o, input i
WHERE n.id = o.id
AND n.id = i.id
RETURNING id
)
INSERT INTO new_table (id, name, location)
SELECT o.id, o.name, o.location
FROM old_table o, input i
WHERE NOT EXISTS (SELECT 1 FROM upd)
AND o.id = i.id;
这是一个密切相关的答案,并有更多解释:
Problems with a PostgreSQL upsert query
出现竞争条件的可能性很小。如果您计划在高并发负载下使用它,请考虑这个相关问题和更多链接:
Upsert with a transaction
更新整个表格:
WITH upd AS (
UPDATE new_table n
SET name = o.name
, location = o.location
FROM old_table o
WHERE n.id = o.id
RETURNING id
)
INSERT INTO new_table (id, name, location)
SELECT o.id, o.name, o.location
FROM old_table o
LEFT JOIN upd u USING (id)
WHERE u.id IS NULL;
关于sql - 如果不存在则插入,否则在 Netezza 中更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458463/
我有一个大文件,已使用 ETL 工具将其加载到 netezza 数据库的表中,我们将此数据库称为 Staging_DB。现在,进行一些验证,该表的内容需要插入到另一个 netezza DB 中的类似结
我有一个列,其中有一个用空格分隔的客户的名字和姓氏。我会写什么代码来解析他们两个?我试过这个,但它不起作用。 SELECT LEFT (CUSTOMER_NAME, CHARINDEX(' ', CU
我长期以来一直在 MS SQL 中使用 INFORMATION_SCHEMA.COLUMNS,并且是我最好的 friend 之一。我的公司正在将其平台转换为 Netezza。 Netezza 中是否有
我正在使用 EXTERNAL TABLE 从文本文件将数据批量加载到 Netezza,在将数据加载到外部表后,我正在更新同一外部表中的一些列,因为您无法更新外部表我必须从外部表暂存所有数据到一个临时表
我有一个查询从字段 [DATE] BETWEEN '10/1/2017' AND '10/31/2017' 中提取日期 我想在标准之间的结束日期中添加天数 (10/31/2017)。似乎不可能。我可以
我在 Netezza 中创建了一个表,如下所示: CREATE TABLE sample ( col1 int, col2 int, col3 int, col4 int ) DISTRIBUTE O
SYSTEM.ADMIN(ADMIN)=> create table test ( name varchar(20), age int); CREATE TABLE SYSTEM.ADMIN(ADMI
我正在尝试将文本文件中的数据加载到 中的外部表中Netezza . 这是我的命令 INSERT INTO XTABLE_DHARMESH SELECT * FROM EXTERNAL 'C:\Dham
鉴于 netezza 在 Netezza SQL 中具有 SQL equilalent,它是否通过一些编程模型(如 PL/SQL)支持更强大的内网解决方案? 最佳答案 是的,他们有所谓的 NZPLSQ
我正在对两个不同的数据库进行查询,并且有两个不同的数据源,并且池是使用 c3p0 创建的。对第二个数据库的查询失败并出现以下错误netezza.max.stmt.handles 你能帮我解决这个问题吗
这是使用的序列创建语法: CREATE SEQUENCE BD_ID_SEQ AS INTEGER START WITH 999 INCREMENT BY 1 NO MINVA
Netezza 外部表间歇性出现问题。 外部表因系统本身生成的文件而失败(意味着外部表生成的文件不是来自其他来源)。但我们尝试通过 nzload 实用程序将相同的文件加载到另一个表,并且该文件运行正常
我有一些非基于集群的表,其中大约 10% 的记录每天批量更新。要回收逻辑上删除的记录,整理是在批处理结束时完成的。尽管表格大小在短短一周内就变成了新 CTASed 表格的两倍。对于那些更新非常少的表,
是否可以通过编程找到 Netezza 表使用的分布算法类型? 我可以通过导出表 DDL 在 Workbench 中手动执行此操作,但我希望能够通过运行某种元数据 SQL 查询以编程方式执行此操作。 我
我正在 Netezza 中加载 CSV 文件。该文件中的一列的值类似于:$500,000-$749,999。 即使该值括在双引号内,Netezza 也不会忽略逗号。它会抛出一个错误,例如 - 预期行尾
不支持 ALTER TABLE table_name 添加列。还有其他方法可以向表中添加列吗? 最佳答案 你错了。 Netezza 支持添加列。这在您的数据库用户指南中有描述,B-19 部分解释了 A
如何在 Netezza 中同时插入多行?我有大约 20k 条记录要插入,但需要 1 小时(!)才能使用单个插入将它们全部放入 INSERT INTO MYTABLE VALUES (2, 2, 2,
我在 Netezza 中运行以下查询并收到提到的错误。 查询: SELECT * FROM WORKORDER SRC INNER JOIN APPOINTMENT TRG
我在 Netezza 中有一个小的(大概)聚合数据集,大约 1000 万行,在 TwinFin 6 上。 为了稍微简化问题,我减少了列数: CUSTOMER_SALES_AGG CUSTOMER_ID
运行更新时出现错误,但我无法确定问题出在 Netezza 中。感谢您的帮助。 错误 [42S02] 错误:关系不存在 DEVML_WORK.AGRINSHPUN.A update Table A
我是一名优秀的程序员,十分优秀!