导入包含非常长字符串的大型平面文件作为SSIS包

时间:2016-08-18 22:41:12

标签: sql-server ssis

我正在尝试通过SQL Server 2012中的数据导入创建SSIS包。

数据看起来像这样(这是只有1行的数据,删除了机密数据):

  

35 XXXX.XXXXXXXXXXXXXXXX 2. XXXX。 6. XXXX。 1. 10.NNN 80000000.XXXXXXXXd 1001. 1001. 6.NNNNNNNNNNNNNNN 0. 0. 17.XXXXXXXX-XXXXXXXXXXX-XXINCMGFO XXXX。 0. 0.00000000000000N N XXXXXXXXXXXXXXXXXXXXXXXXXXXEVITE,INC.XXXXXXXX CA US 5734. 0.0TMP 88 12.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 12.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX-.2000000 .00

此平面文件的每一行不共享相同的模式,而某些可能在数据中包含单引号或双引号。这些单/双引号可能不完整,它们留在数据中,因为数据尚未完全清除。

每个平面文件都在每月月底生成。我打算做的是创建一个SSIS包,然后创建一个作业来调用这个SSIS包,将所有每月原始数据自动存储到1个临时表中。稍后我将编写一个存储过程来清理此临时表中的数据,并将已清理的数据移动到另一个表中。

但我的问题是关于创建这个SSIS包。

它一直给我这样的错误: error imag

因此,我尝试更改属性:

将字符串更改为5000长度,我也试过8000,没有工作

set string length as 5000

更改为文字流,因为我认为这可能会允许更长的字符串..

set as text stream

他们仍然给了我同样的错误。

所以我找到了一个解决方案here 我猜也许是因为我的数据在某些行中的双引号或单引号不完整,但我不能像解决方案那样参数化查询,因为平面文件中的所有行都将保存在1列中...

因此,有没有办法解决这个问题,因为创建SSIS包?

1 个答案:

答案 0 :(得分:1)

问题已经解决了。它仍然值得在这里分享,因为有一些细节需要注意,否则会有错误。

我们仍然可以通过SQL Server导入向导解决问题。就我而言,平面文件没有标题。每个文件都是一个平面文件,它们没有.txt扩展名。

详情1 从源文件夹中选择文件时,我们必须在显示所有文件时将文件格式设置为.txt;并且需要在显示.txt时选择所有文件。否则以后可能无法从预览中看到任何数据,无法继续。

image1

详情2 就我而言,每行记录都很长,每行使用不同的dimilters。最好使用固定宽度格式,否则您可能会收到我上面显示的错误。在文件名中我必须删除“.txt”,因为我的真实文件名没有.txt,但是在这里它们应该被视为.txt。取消选中“第一个数据行中的列名称”,因为我没有文件头。

image1

详情3 选择固定宽度格式后,我们需要将红线拖到每行的末尾。你应该看到这些黑色方块意味着行的结尾

image3

详情4 同时,我们可以点击标尺并将每一行分成几列。

image4

完成所有这些设置后,我们可以继续单击“下一步”,在我的情况下,我现在可以成功生成SSIS包。