由于需要在数据库中批量插入大量数据(效率决定),就要在数据库系统中,用SQL语句来执行。
PostgreSQL没有提示GUID的生成函数,所以在批量插入数据的时候,如果要采用GUID作为主键,则需要自己生成(不过有提供uuid-ossp这个插件使用,但需要安装配置)。这里直接在Pg数据库中创建一个生成UUID的函数,直接调用即可。
网上找了个方法。。。
CREATE OR REPLACE FUNCTION uuid()
RETURNS text AS
$$
declare
str1 text;
str2 text;
Mac text;
begin
-- MAC地址
Mac='aa:aa:aa:aa:aa:aa';
str1 := md5(MAC || now());
str2 := SUBSTRING(str1, 1,8)||'-'|| SUBSTRING(str1,9,4) ||'-'|| SUBSTRING(str1,13,4) ||'-'|| SUBSTRING(str1,17,4) ||'-'|| SUBSTRING(str1,21,12);
RETURN cast(str2 as varchar(36));
end;
$$
LANGUAGE 'plpgsql' VOLATILE;
不过这个方法只适用一条记录一条记录的执行。。批量执行时,now()得到的时间是一样的,会导致主键重复。
需要用的话,可以直接将上面的代码,修改到存储过程中,根据相关参数修改str1的值
。。。。