0

我试图弄清楚如何将我现有的 DTS 文件转换为托管在 SQL 2005 服务器上的 DTSX。

在我的第一次尝试(第一次 DTS)中,我已经被卡住了。

我不想看使用 DTS 是如何完成的,而是想专注于新的 DTSX 技术。

必须做什么。

  • 检查输入文件是否存在,否则退出。(尚未完成)
  • 截断目标表
  • 将文件导入数据库
  • 报告一切是否正常。

步骤导入文件是我卡住的地方。我有一个固定列大小的平面 tekst 文件,其中门牌号和扩展名在一个列中。数据库有两列。

我首先尝试了一个派生列,但可以找到拆分(第一个)数字部分的检查。

在搜索使用正则表达式时,我读到了我读到的“脚本组件”与 SQL 2005 不兼容。

还有另一种可能吗?

这让我想到了第二个问题:是否可以将 SQL Server Data Tools (SSDT) 与 SQL Server 2005 一起使用。

4

1 回答 1

0

你有一份工作摆在你面前。您将需要使用派生列转换,因此请查找它们。将数据查看器添加到您的数据流中会很有帮助,这样您就可以看到哪些数据在流中移动,以及 SSIS 认为其中的内容。

在您的情况下,您将不得不操作字符串。有两种字符串数据类型,DT_STR 和DT_WSTR(例如,VARCHAR 和NVARCHAR)。SSIS 对数据类型非常特别,您可能必须使用强制转换操作将一种类型转换为另一种类型。例如,(DT_WSTR, 50)Blah 将 Blah 列中的 50 个字符转换为 DT_WSTR。DT_STR 类型也需要知道代码页。例如1252之类的东西。

您可能需要 SSIS 版本的Immediate If,它检查条件是否为真,并返回一个结果或另一个: Blah==100?1:0 对于那些列 Blah 的记录,结果将为 1等于 100,所有其他记录为 0。您可以嵌套这些立即 If 语句,一个在下一个中,在下一个中,adn 等等。

您将需要在派生列小部件中创建至少两个新列,一个用于数字,一个用于后面的内容。所以这是一种非常痛苦的方式来做你想做的事。使用字符串函数检查第一个字符是否为数字,然后返回或不返回。对第二个字符等执行相同的操作。

当然,我确信有更好的方法来做到这一点。您的工具箱包含派生列小部件中的功能,因此您必须使用这些功能。(或者,在这种情况下,您可能会使用 SQL UPDATE 语句做得更好,您将在上面的控制流中作为后续任务执行,而不是在下面的数据流中。)

公平的警告:SSIS 的 SQL Server 2005 版本有很多很多的错误和挫折,这些错误和挫折在更高版本的 SQL Server 中得到了修复或改进。即使您只是使用 SQL Server 2008,您也会省去很多麻烦。

于 2013-04-23T17:05:04.600 回答