我是.net的新手,我在SSIS中使用脚本任务。我正在尝试将文件加载到具有如下所示字符的数据库。这看起来像是从word中复制的数据 - 已转向 -
示例文字: 更正 - 春季促销2016
我在.net脚本WHERE id = 1
中使用了正则表达式,但即使它落在范围内也会被替换掉。我不希望这些字符被改变。我在这里缺少什么?
如果我不替换,我会收到截断错误,因为我相信这些字符的大小会超过一点。
修改:我添加了示例行。前两行有问题,最后两行没问题。
[^\x00-\x7F]
好长周末:)我开始认为这是由于代码页错误造成的。加载平面文件时的确切错误消息如下所示。
错误:数据转换失败。 “NAME”列的数据转换返回状态值4,状态文本“文本被截断,或者目标代码页中的一个或多个字符不匹配。”。
这就是我在ssis包中所做的。
记事本:更正 春季促销2016
如何停止执行此脚本任务? (这应该是解决方案)
如果这不容易,选项2是...... 我的连接管理器是平面文件源和OLEDB目标。 OLEDB使用默认代码页 1252 。如果这些字符在代码页1252中不匹配,我应该使用什么?没有更改代码页,还有其他解决方法吗?
脚本任务:
123|NA|0|-.10000|Correction – Spring Promo 2016|.000000|gift|2013-06-29
345|NA|1|-.50000|Correction–Spring Promo 2011|.000000|makr|2012-06-29
117|ER|0|12.000000|EDR - (WR) US STATE|.000000|TEST MARGIN|2016-02-30
232|TV|0|.100000|UFT / MGT v8|.000000|test. second|2006-06-09
非常感谢你。
答案 0 :(得分:1)
我不清楚你打算做什么,因为“我不希望这些字符被改变”似乎是互斥的,“它们必须被替换以避免截断”。我需要查看代码以便为您提供进一步的建议。
一般情况下,我建议您首先在代码之外测试正则表达式模式。我通常使用http://regexr.com