首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串中为唯一索引数据库列创建哈希?

问如何从字符串中为唯一索引数据库列创建哈希?
EN

Stack Overflow用户
提问于 2018-04-25 19:30:02
回答 1查看 566关注 0票数 1

我想从字符串连接的值创建一个哈希值。生成的散列稍后应用作mysql数据库中的unique index。

问:哪种类型的散列最适合用作数据库中的唯一索引?当然,对于相同的输入,散列必须始终相同。

可能有几种选择:

代码语言:javascript
复制
string.hashCode();
UUID.nameUUIDFromBytes(string.getBytes());
org.apache.commons.codec.digest.DigestUtils.sha256Hex(string);

背景:

我想将一个100GB+ csv文件导入到mysql数据库表中。我控制着csv文件的生成。文件是通过LOAD DATA LOCAL INFILE INTO TABLE插入的...

我想指定22列中应该表示unique index的20列。如果将某一行加载到表中,并且唯一索引已经存在,则应该跳过该行。

因此,我可能不得不在LOAD DATA中使用IGNORE关键字。

但是,在20列上创建唯一索引可能会减慢插入速度。因为我只需要用来忽略“重复”行的索引,所以我想我也可以创建一些额外的hash列,然后直接写入csv文件。

问题:

1)对于唯一id,使用单个散列更好,还是应该在20个数据库列上创建唯一id?

2)如何才能最好地在由这20列连接的大字符串上创建唯一的hash?

EN

回答 1

Stack Overflow用户

发布于 2018-04-25 19:41:53

为此,我建议使用SHA256或MD5。每次实例化String.hashCode()时,它都会发生变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50021177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档