繁体   English   中英

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

[英]SQL Server Migration Assistant for Oracle truncating text at 100 chars

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

经过一些较早的研究,似乎我可能需要设置一个显式转换规则,因此我将Oracle的“ LONG”映射到SQL VARCHAR(8000),但是即使目标表列现在的大小正确(模式已根据需要更改) ,插入的文本将始终被截断为前100个字符。

这个问题: Oracle中的LONG文本被SSIS来源删减了吗?

相似,并且似乎指向SSIS可能与OLEDB驱动程序有关的问题,但是我不知道这是否相关(即使是这样,我也不知道该如何解决该问题) SSMA)。

有人对SQL Server Migration Assistant专家有什么想法吗?

最终的解决方案是编写查询以将数据从表中拉出,然后通过内置的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,这使新表中的数据转换有效。

我本来可以更改原始表(并且只添加带有转换后数据的新列),但是我无法更改现有表的任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM