SQL Server 迁移助手,用于 Oracle 截断 100 个字符的文本



我一直在尝试将oracle数据库迁移到sql server 2005,但没有成功。 我看到的问题是将Oracle"LONG"文本迁移到SQL varchar。 迁移完成后,我只能从 Oracle 数据库中签入的字段中获取前 100 个字符的数据。 我可以在 SSMA for Oracle 的数据视图中查看超过 100 个字符的数据。

经过一些早期的研究,似乎我需要设置一个明确的转换规则,所以我将 Oracle 的"LONG"映射到 SQL VARCHAR(8000(,但即使目标表列现在是适当的大小(架构根据需要更改(,插入的文本总是被截断为前 100 个字符。

这个问题:Oracle 中的长文本被 SSIS 源缩短了?

类似,似乎指出 SSIS 在 OLEDB 驱动程序中可能存在的问题,但我不知道这是否相关(即使相关,我也不知道我应该怎么做才能在 SSMA 中纠正此问题(。

有人SQL Server迁移助手专家有什么想法吗?

最终的解决方案是编写一个查询,将数据从表中提取出来,并通过内置的 Oracle 函数将其作为 CLOB 插入到新表中(SSMA 将其正确处理为 varchar(MAX( 并且不会截断(。

我在sqlplus中使用了类似于以下内容的命令:

create table schema.my_new_table as
select primary_key_field, to_lob(troublesome_long_column) troublesome_long_column
from schema.original_table;

由于我包含了主键字段,因此我可以将每一行绑定回原始表。 "to_lob"函数将 LONG 转换为 CLOB,这使得新表中数据的转换工作。

我会更改原始表(并且只是添加了包含转换后数据的新列(,但我无法更改有关现有表的任何内容。

相关内容

  • 没有找到相关文章

最新更新