通过SSMA将Oracle中的Raw [16](Guid)转换为SQL Server中的uniqueidentifier

问题描述 投票:0回答:1

我已经处理了将数据从Oracle数据库转换为SQL Server数据库所需的问题,除了SQL Server迁移助手之外没有办法。 在SSMA中有一个TypeMapping,它允许您定义要投射的类型。我将Raw [16](Oracle中的Guid)添加到了UniqueIdentifier(oracle中的Guid)作为TypeMapping。 但是当SSMA开始转换数据时,它会返回以下异常:

来自数据源的类型Byte []的给定值无法转换为指定目标列的类型uniqueidentifier。

sql-server oracle guid uniqueidentifier sql-server-migration-assi
1个回答
0
投票

ORACLE SYS_GUID是RAW(16),它是32个字符的十六进制表示。

等效的SQL Server数据类型Uniqueidentifier是16字节的二进制值,它是36个字符的表示形式。 SQL Server UniqueIdentifier

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个x是0-9或a-f范围内的十六进制数字。例如,6F9619FF-8B86-D011-B42D-00C04FC964FF是有效的uniqueidentifier值

您可以考虑以下选项:

  • 我建议你使用VARCHAR(32)来表示类型映射中SQL Server中相应的ORACLE GUID。
  • 您可以为目标列设置NEWID()的默认值,在加载数据时将分配值
  • 将目标数据类型设置为VARCHAR(36),完成迁移后,可以开始使用NEWID()来获取未来的值。由于GUID将是独一无二的,因此您不会遇到问题。
© www.soinside.com 2019 - 2024. All rights reserved.