gpt4 book ai didi

copy - 使用 COPY 查询在 Vertica 中插入唯一记录

转载 作者:行者123 更新时间:2023-12-01 13:54:25 30 4
gpt4 key购买 nike

我是 Vertica DB 的新手,之前使用过 Mysql。我想在 vertica 表中插入唯一记录,但 vertica 在插入时不支持唯一约束。我通过 COPY 查询在表中插入记录。所以我无法在插入前检查每条记录,是否存在。有人可以帮助我优化独特插入的方式吗。

提前致谢:)

最佳答案

您可以将NO COMMIT 添加到您的COPY 并在COMMIT 之前运行ANALYZE_CONSTRAINTS:

dbadmin=> CREATE TABLE tbl (a int PRIMARY KEY);
CREATE TABLE
dbadmin=> COPY tbl FROM STDIN NO COMMIT;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1
>> 2
>> 2
>> 3
>> \.
dbadmin=> SELECT * FROM tbl;
a
---
1
2
2
3
(4 rows)

dbadmin=> SELECT ANALYZE_CONSTRAINTS('tbl');
Schema Name | Table Name | Column Names | Constraint Name | Constraint Type | Column Values
-------------+------------+--------------+-----------------+-----------------+---------------
public | tbl | a | C_PRIMARY | PRIMARY | ('2')
(1 row)

dbadmin=> DELETE FROM tbl WHERE a = 2;
OUTPUT
--------
2
(1 row)

dbadmin=> COMMIT;
COMMIT
dbadmin=> SELECT * FROM tbl;
a
---
1
3
(2 rows)

这显然是一个简单的例子。

我在我的博客文章 Enforcing Uniqueness of Data on Load 中介绍了这个主题.

更新:从 7.2 开始,Vertica 可以自动 enforce PRIMARY and UNIQUE constraints加载中。

关于copy - 使用 COPY 查询在 Vertica 中插入唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31580973/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com