我需要将数据从系统A传输到系统B。系统A将用户ID存储为UUID,而系统B将其存储为整数。
我正在使用MySQL select语句从系统A检索和保存数据,然后将其转移至系统B。是否有一种简单的方法在MySQL select语句中将UUID转换为整数?
我需要将数据从系统A传输到系统B。系统A将用户ID存储为UUID,而系统B将其存储为整数。
我正在使用MySQL select语句从系统A检索和保存数据,然后将其转移至系统B。是否有一种简单的方法在MySQL select语句中将UUID转换为整数?
正如在评论中所讨论的那样,你不能简单地将UUID转换为整数并期望它是唯一的。UUID是128位,而 INT(10)
只有32位。这意味着你必须忽略96位,这相当于非常大数量的潜在冲突(每个唯一的32位值约有78个千亿个不同的UUID)。
但不是所有的都失去了希望,因为在32位内可以表示多达约40亿个用户,这可能已经足够了。你需要做的就是将现有的UUID映射到一个整数上,这其实非常直观。
为此,您可以创建一个翻译表,该表存储UUID(作为主键)和唯一整数(可能是自增字段)。您可以使用此表从系统A映射到系统B(反之亦然)。您可以将此表放入两个数据库中的任何一个中,也可以将其保持分离。个人而言,我会将其放入系统B中,因为那里的userId
整数值实际上是有意义的。
system_b_user_id
,当然要对其进行UNIQUE
约束。 - paddy