为Duckdb已有表添加唯一列(键)
目录
背景
众所周知,表的唯一键在查询和维护数据时非常重要,但有些表并不一定存在唯一键。 在其他数据库中为已有表新增唯一键是件很简单的事情,那就是update和row_number函数结合使用即可。 但是duckdb不支持二者结合使用。所有才有此文章。
原有表结构:
|
|
## 第一步
新建表,新表的结构在原表的基础上新增唯一键uid列,
sql~~ ~~CREATE TABLE new_table (~~ ~~ uid INTEGER PRIMARY KEY,~~ ~~ 项目编号 VARCHAR,~~ ~~ 项目名称 VARCHAR,~~ ~~ 客户姓名 VARCHAR,~~ ~~);~~ ~~## 第二步
然后将使用insert to 和row_number函数结合的方式来进行数据转移。
数据量大的时候,非常慢。
新方法(超快)
利用的是sequence(官方sequence文档)
|
|
拓展使用-duckdb新建表时设立自增长id列
|
|
更多duckdb使用技巧:https://duckdbsnippets.com/
通过正则表达式筛选输出列
|
|
通过EXCLUDE关键字反选输出列
|
|