SSIS中数据库类型错误!

bhtfg538 2009-09-14 11:10:01
问题:
目标表的一个字段 2000 中的 TEXT
源表的一个字段 VARCHAR(2000);
在SSIS中死活倒不过去.

出现如下错误UNICODE和非UNICODE无法转发

比如字读Col 我在源里面CAST(Col AS VARCHAR(2000)--VARCHAR(MAX)等等
)都报错.
我就想法拖了一个 DATA Conversation 也报错,我一选择DT_STRING 也报错

我一步步转换成 NVARCHAR(MAX) -> VARCHAR(2000) 报错.

毫无疑问,数据库脚本在SSMS直接执行是没问题的.
但是一方到SSIS中就出错,还有 N' '尽然也报错说UNICODE 和非UNICODE 无法转换,我就郁闷了.

大家快帮帮我啊.
...全文
1271 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
orz_ORZ_orz 2010-08-30
  • 打赏
  • 举报
回复
学习学习,看看
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 liangck 的回复:]
--创建测试
CREATE TABLE source(id int,content ntext);
INSERT source VALUES(1,REPLICATE('梁',1000))
INSERT source VALUES(2,REPLICATE('嘉',1000))
INSERT source VALUES(3,REPLICATE('辉',1000))

CREATE TABLE dest(id int,content varchar(2000))


--SSIS

1.数据流.
2.OLEDB源.并设置表为SOURCE表.列.为所有列.
3.添加一个"数据转换"组件.并将2的绿色流拖到此组件上.
4.然后生成一个"content 副本"的输出列,输入列为"content".
    类型为DT_TEXT.代码页为936  简体中文 GBK.
5.再添加一个"数据转换"组件.并将3的绿色流拖到此组件上.
6.生成一个"content 副本的副本"的输出列.输入列为"content副本".
    类型为DT_STR.代码页为936 简体中文GBK.
7.SQL SERVER目标.列映射时使用"content 副本 的副本"与目标的content映射.
8.运行.
[/Quote]

我测试看看
soft_wsx 2009-09-14
  • 打赏
  • 举报
回复
SSIS不太懂

不知道有没有配置数据源!看一下是不是在配置数据源的时候弄错了
liangCK 2009-09-14
  • 打赏
  • 举报
回复
--创建测试
CREATE TABLE source(id int,content ntext);
INSERT source VALUES(1,REPLICATE('梁',1000))
INSERT source VALUES(2,REPLICATE('嘉',1000))
INSERT source VALUES(3,REPLICATE('辉',1000))

CREATE TABLE dest(id int,content varchar(2000))


--SSIS

1.数据流.
2.OLEDB源.并设置表为SOURCE表.列.为所有列.
3.添加一个"数据转换"组件.并将2的绿色流拖到此组件上.
4.然后生成一个"content 副本"的输出列,输入列为"content".
类型为DT_TEXT.代码页为936 简体中文 GBK.
5.再添加一个"数据转换"组件.并将3的绿色流拖到此组件上.
6.生成一个"content 副本的副本"的输出列.输入列为"content副本".
类型为DT_STR.代码页为936 简体中文GBK.
7.SQL SERVER目标.列映射时使用"content 副本 的副本"与目标的content映射.
8.运行.
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
Error 1 Validation error. DTSTask_DTSDataPumpTask_4: Data Conversion 1 [470]: Conversion from "DT_NTEXT" to "DT_STR" is not supported. ImportCapaingData.dtsx 0 0


我先从DT_NTEXT 到 NT_TEXT ->DT_STR 然后出这个错误
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
郁闷,还是不行,谁建立个测试,看看是不是有类似bug啊.
liangCK 2009-09-14
  • 打赏
  • 举报
回复
先将ntext转为text.注意代码页..
然后text转DT_STR.
再到目标.
----
应该可以吧?
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
lenovo_campaignpurpose as campaignpurpose, --我估计是NTEXT ,我看不到数据类型
' ' as Offertype,--这个我一加N' ' 就出错,在源里面,我就纳闷

貌似暴露这两个字段

分别 转换成
VARCHAR(2000),
NVARCHAR(50)

代码页是 简体中文
liangCK 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bhtfg538 的回复:]
好了,可以打字了.我加了那个DATA 转换,我在想是不是要转换两次
[/Quote]

估计要转换两次..

先将ntext转为text.注意代码页..
然后text转DT_STR.
再到目标.
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
NTEXT->VARCHAR(2000);
首先 先NTEXT -> NVARCHAR(MAX) -> VARCHAR(2000)
我去试试了.
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
好了,可以打字了.我加了那个DATA 转换,我在想是不是要转换两次
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liangck 的回复:]
我就想法拖了一个 DATA Conversation 也报错,我一选择DT_STRING 也报错
----------------------

varchar  转 ntext?

源和目标中间加一个.DATA Conversation .类型选择DT_WSTR
[/Quote]
ntext-> varchar
I am trying to do that.
thank you all the same.
i can't input PINYIN,...
feixianxxx 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liangck 的回复:]
我就想法拖了一个 DATA Conversation 也报错,我一选择DT_STRING 也报错
----------------------

varchar  转 ntext?

源和目标中间加一个.DATA Conversation .类型选择DT_WSTR
[/Quote]


MM
liangCK 2009-09-14
  • 打赏
  • 举报
回复
或者类型选择DT_NTEXT
liangCK 2009-09-14
  • 打赏
  • 举报
回复
我就想法拖了一个 DATA Conversation 也报错,我一选择DT_STRING 也报错
----------------------

varchar 转 ntext?

源和目标中间加一个.DATA Conversation .类型选择DT_WSTR
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
最可恶的是,还不让建立链接服务器,不然我直接运行一个脚本任务,非要托到DATA FLOW里面去做
--小F-- 2009-09-14
  • 打赏
  • 举报
回复
2000到2005是有可能出现兼容性等方面的问题的
bhtfg538 2009-09-14
  • 打赏
  • 举报
回复
NTEXT --> VARCHAR(2000)

MISTAKE
guguda2008 2009-09-14
  • 打赏
  • 举报
回复
SSIS,帮顶,学习
liangCK 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 bhtfg538 的回复:]
终于知道原因,所在了,是我太粗心了.谢谢小F,和梁

因为我Data Conversation以后并没有去选择隐射,默认的还是 OLE DB的那个字段,要手动选择Converated以后的...

我郁闷死了/哈哈
[/Quote]

我在写例子的时候.猜可能会是这个原因..
加载更多回复(1)

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧