1

我一直在尝试将 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 迁移助手专家有什么想法吗?

4

1 回答 1

1

最终的解决方案是编写一个查询,通过内置的 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,从而使新表中的数据转换工作。

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

于 2013-10-15T13:57:32.563 回答