数据清洗小记:主键类ID字段的生成

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则有权追究版权法律责任。

深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46340623

【背景】

在由源端抽取数据插入目标端后,需要创建一个主键ID字段。

【解决】

方法一、使用sys_guid()函数生成32位的随记数

例如向emp表中,新建一个字段,并且设置字段默认值为用sys_guid()函数自动生成一个32位不重复的随机数。

alter table
 EMP add 
ID varchar2(32) default 
 sys_guid();

方法二、使用触发器每插入一条自动递增序列

例如每次向emp1表新插入一条数据之前,先插入一个ID值。其中seq_idadd是事先已经创建的序列,可以自行定义该序列的起始值、方差值等。

create or 
replace trigger
 tr_IDADD

before  insert 
on emp1

for  each  
row

begin

select   seq_idadd.nextval into  
:new.id from   dual;

end;

方法三、拼接

例如某ID主键是通过源端业务字段的拼接形成的,例如:

来源ID号||to_char(sysdate,
‘yyyymmdd‘)
||lpad(NEXTNUM.Nextval,10,0)

我们假设来源ID号为12位的话,这样就截取了一个12+8+10=30位的主键编号。

【实验】

使用sys_guid获取ID值,如下:

通过触发器,每新增一条数据,ID以1递增,如下:

通过拼接获得主键ID,如下:

小知识,简而记之。

*******************************************蓝的成长记系列_20150523*************************************

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

蓝的成长记——追逐DBA(1):奔波于路上,挺进山东

蓝的成长记——追逐DBA(2):安装!安装!久违的记忆,引起我对DBA的重新认知

蓝的成长记——追逐DBA(3):古董上操作,数据导入导出成了问题

蓝的成长记——追逐DBA(4):追忆少年情愁,再探oracle安装(Linux下10g、11g)

蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

蓝的成长记——追逐DBA(6): 做事与做人:小技术,大为人

蓝的成长记——追逐DBA(7):基础命令,地基之石

蓝的成长记——追逐DBA(8):重拾SP报告,回忆oracle的STATSPACK实验

蓝的成长记——追逐DBA(9):国庆渐去,追逐DBA,新规划,新启程

蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere

蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来

蓝的成长记——追逐DBA(12):七天七收获的SQL

蓝的成长记——追逐DBA(13):协调硬件厂商,六个故事:所见所感的“服务器、存储、交换机......”

蓝的成长记——追逐DBA(14):难忘的“云”端,起步的hadoop部署

蓝的成长记——追逐DBA(15):以为FTP很“简单”,谁成想一波三折

蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了

******************************************************************************************************************

********************************************足球与oracle系列_20150528***********************************

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

足球与oracle系列(1):32路诸侯点兵,oracle32进程联盟 之A组巴西SMON进程的大局观

足球与oracle系列(2):巴西揭幕战预演,oracle体系结构杂谈

足球与oracle系列(3):oracle进程排名,世界杯次回合即将战罢!

足球与oracle系列(4):从巴西惨败于德国,想到,差异的RAC拓扑对比! 

足球与oracle系列(5):fifa14游戏缺失的directX库类比于oracle的rpm包!

足球与oracle系列(6):伴随建库的亚洲杯——加油中国队

******************************************************************************************************************

时间: 2024-10-08 15:12:32

数据清洗小记:主键类ID字段的生成的相关文章

SQLITE数据表主键设置Id自增方法

SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: SQL(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 搞定了一个困扰许久的问题,原来sqlite中的主键也是可以设置为自增的:)方法就是声明为 INTEGER PRIMARY KEY 的字段可以自动增加.    网上查到资料说,从 SQLite 的 2.3.4 版本开始,如果将一个表

java UUID.randomUUID()自动生成主键作为Id或文件路径

UUID.randomUUID().toString()是javaJDK(1.5以上的版本)提供的一个自动生成主键的方法,它生成的是以为32位的数字和字母组合的字符,中间还参杂着4个 - 符号. 作用:它可以作为我们表的标识列来增加,比序列增长更加方便.当然还可以用来拼接作为路径,或者图片的前缀名等等. 使用原因: 文件命名或者其他使用时间命名对于高并发会存在风险,使用UUID会规避风险, import java.util.UUID: UUID.randomUUID().toString():

oracle 中查看一张表是否有主键,主键在哪个字段上的语句怎么查如要查aa表,

select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name = 'AA'-------大写 查看AA表的主键约束名称,以及主键约束的字段名称. 如果没有,则返回空

Hibernate--根据实体类获得表名、主键名、字段名(与Spring集成)(二)

在上一篇中,我们创建了HibernateConfigurationUtil类,可以通过它来获得实体类对应的表名.列名等相关信息,本篇我们会就借助于HibernateConfigurationUtil类以及Java反射,来实现一个JDBCUitl工具类,实现类似于Hibernate中Session.save(Object object)的功能 JDBCUtil类 package util; import java.lang.reflect.Field; import java.sql.Connec

hibernate annotation生成uuid主键(id为string类型的)

hibernate annotation生成uuid主键 (2012-02-07 15:18:43) 转载▼ 标签: uuid 主键 注解 杂谈 分类: javaWeb JPA标准方式下,不可以生成uuid类型的主键,但是hibernate提供了一些方式生成uuid主键,具体方式, 1,通过注解方式生成一个generator @GenericGenerator(name="idGenerator", strategy="uuid") 2.主键生成器 @Generat

jfinal 连接oracle 数据库把外键当成主键 在mappingkit文件里生成多个主键解决办法

1 听波总说是ojdbc  这个jar包版本问题 我以前用的ojdbc14 我换成6了之后 还是存在这个问题 所以我重写了jfinal源码里面的方法 也就是第二种方法 2  下面是我重写的类 package com.syhz.model; import java.sql.ResultSet;import java.sql.SQLException; import javax.sql.DataSource; import com.jfinal.kit.StrKit;import com.jfina

插入一条新数据,如何返回主键值id,id是自动增长的

strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity" SQLCommand.CommandText = strSQL Id = SQLCommand.ExecuteScalar()

主键自动生成办法

package com.phome.util; import java.util.UUID;/** * 动态生成主键类 * 功能:动态生成主键 * @author 孙丽欣-pc * @time ...... * */public class GeneratePrimaryKey { /** * 获取主键 */ public static String generate(){ return UUID.randomUUID().toString(); }}

[原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------