我正在尝试通过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包。
因此,我尝试更改属性:
将字符串更改为5000长度,我也试过8000,没有工作
更改为文字流,因为我认为这可能会允许更长的字符串..
他们仍然给了我同样的错误。
所以我找到了一个解决方案here 我猜也许是因为我的数据在某些行中的双引号或单引号不完整,但我不能像解决方案那样参数化查询,因为平面文件中的所有行都将保存在1列中...
因此,有没有办法解决这个问题,因为创建SSIS包?
答案 0 :(得分:1)
问题已经解决了。它仍然值得在这里分享,因为有一些细节需要注意,否则会有错误。
我们仍然可以通过SQL Server导入向导解决问题。就我而言,平面文件没有标题。每个文件都是一个平面文件,它们没有.txt扩展名。
详情1 从源文件夹中选择文件时,我们必须在显示所有文件时将文件格式设置为.txt;并且需要在显示.txt时选择所有文件。否则以后可能无法从预览中看到任何数据,无法继续。
详情2 就我而言,每行记录都很长,每行使用不同的dimilters。最好使用固定宽度格式,否则您可能会收到我上面显示的错误。在文件名中我必须删除“.txt”,因为我的真实文件名没有.txt,但是在这里它们应该被视为.txt。取消选中“第一个数据行中的列名称”,因为我没有文件头。
详情3 选择固定宽度格式后,我们需要将红线拖到每行的末尾。你应该看到这些黑色方块意味着行的结尾
详情4 同时,我们可以点击标尺并将每一行分成几列。
完成所有这些设置后,我们可以继续单击“下一步”,在我的情况下,我现在可以成功生成SSIS包。