在创建数据库的时候,主键的主键的生成方式通常有两种,一种是利用数据库的主键自增,产生主键,这也是常用的主键的生成方式。另一种为通过生成的随机序列当做主键。通过excel导入数据库时,excel的数据中包含随机序列时,可以直接将数据导入数据库,当做主键使用。但是如果没有的话,处理则相对比较麻烦(本博客介绍不包含随机数列的情况)。
没有随机数列时,为了能够将excel中的数据导入数据库中,创建数据库表时,暂时将主键去掉,只保留主键字段。在此,我们创建test表,主键id并未标记。
CREATE TABLE `test` (
`ID` varchar(50) DEFAULT NULL COMMENT '测试id',
`NAME` varchar(100) DEFAULT NULL COMMENT '名称',
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表'
2、将excel数据导入数据库表test中
注意:先用excel打开excel表格,否则会提示无法打开excel文件
右键test->导入向导->Excel文件(2007或以上版本)(*.xlsx)->导入->下一步->下一步
在对应的“源栏位”处选择excel中对应的内容,然后依次点击下一步->下一步->开始,完成excel中数据导入数据库表中。
3、在id中生成uuid
UPDATE test SET ID= UUID()
注意,生成id时,不要直接将uuid()产生的序列中的''-"通过Replace方法去掉,不然生成的id的将全部相同。
4、将生成的id中的"-"替换掉
UPDATE test SET ID = (SELECT REPLACE(ID,'-',''))
5、生成时间
UPDATE test SET UPDATE_TIME = CURRENT_TIMESTAMP()
6、生成标准化的数据库
首先,将已经导入到test表中的数据通过sql转储,进行保存。然后将test表删除,然后建立标准的数据库test表(比如主键为id,创建时间为非空等),最后将sql转储的数据导入的数据库表中,完成数据的导入。
UUID(Universal Unique Identifier)或者 GUID(Globally Unique Identifier)是一个 128 比特的数字,可以用于唯一标识每个网络对象或资源。由于它的生成机制,一个 UUID 可以保证几乎不会与其他 UUID 重复,因此常常用于生成数据库中的主键值。
1.pgcrypto 模块提供的 uuid
PostgreSQL 提供了一个用于加/解密的扩展模块 pgcrypto,其中的 gen_random_uuid() 函数可以用于返回一个 version 4 的随机 UUID。
2.uuid-ossp 模块提供的 uuid
uuid-ossp模块提供函数使用几种标准算法之一产生通用唯一标识符(UUID)。还提供产生某些特殊 UUID 常量的函数。
1.将当前目录转移到 PostgreSQL 源代码目录下的 contrib;如:
2.执行如下命令来安装扩展模块
如果要安装 uuid-ossp 模块,需要在执行安装扩展模块之前,执行 configure 并添加 --with-uuid=xxx,xxx取值为:
然后再执行安装扩展模块的命令。
3.检查是否安装,在 PostgreSQL 的安装目录下的 /share/extension 目录下,查看是否有模块相关的文件。如:
注: gen_random_uuid() 从 PostgreSQL 13 开始成为了一个内置函数
如果您所使用的PostgreSQL版本在13以上,则不需要执行如下语句:
生成uuid:
如果想要生成没有中划线(-)的 UUID 字符串,可以使用 REPLACE 函数:
查看包含的函数:
执行如下命令生成 uuid:
mysql设置UUID为主键需要先将数据类型设置为VARCHAR(36),然后插入数据的时候用UUID函数插入UUID。下面我用win10系统下的CMD命令行具体演示一下:
1、打开CMD,输入mysql -uroot -p命令连接mysql,如下图所示
2、通过create创建表,指定ID为varchar(36),并设置为主键,如下图所示
3、在插入数据的时候,调用uuid()函数往主键字段里插入uuid值,如下图所示
4、最后查询插入的数据就可以看到id主键列存放的是uuid类型了,如下图所示
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)