Est*_* P. 4 sql-server ssis etl sql-server-data-tools ssis-2016
我每天必须导入大约50种不同类型的文件。其中一些只有几列,有些则多达250列。
平面文件连接始终将所有列默认为50个字符。某些列的长度可能超过50个字符,当然会导致错误。
目前,我正在使用记事本++进行愚蠢的搜索和替换-打开所有SISS程序包,替换为:
DTS:MaximumWidth="50"
Run Code Online (Sandbox Code Playgroud)
通过
DTS:MaximumWidth="500"
Run Code Online (Sandbox Code Playgroud)
这是一个烦人的解决方法。是否可以将Flatfile字符串列的默认长度设置为某个值?
我正在使用Microsoft Visual Studio Professional 2015和SQL Server数据工具14.0.61021.0开发
谢谢!
我认为没有办法从SQL Server数据工具中实现这一目标。
但是您可以采取一些解决方法来实现此目的:
您可以使用BIML(商业智能标记语言)创建ssis包,如果您不熟悉BIML,则可以访问BIML Script网站以获得详细教程。
您可以创建一个Small应用程序,该应用程序循环遍历.dtsx文件夹中的文件,DTS:MaximumWidth="50"并DTS:MaximumWidth="500"使用正态String.Replace函数或正则表达式替换。(您可以从.Dtsx文件中读取我的答案@ 自动版本号检索,以查看使用正则表达式读取.dtsx文件的示例)
读取和替换dtsx文件内容的功能(Vb.Net)
Public Sub FixDTSX(byval strFile as string)
dim strContent as string = string.empty
Using sr as new Io.StreamReader(strFile)
strContent = sr.ReadToEnd()
sr.Close()
End Using
strContent = strContent.Replace("DTS:MaximumWidth=""50""","DTS:MaximumWidth=""500""")
Using sw as new Io.StreamWriter(strFile,False)
sw.Write(strContent)
sw.Close()
End Using
End Sub
Run Code Online (Sandbox Code Playgroud)
使用标准Visual Studio SSDT UI可以实现所需的功能,尽管它相当模糊。AFAIK自SQL Server 2005起可在此编辑器的每个版本中使用。
打开包后,从“连接管理器”窗格中,右键单击“平面文件连接”,然后选择“编辑”。然后导航到“ 高级”页面。然后,多选您要更改的列(例如,按住Shift键并单击某个范围或按住Ctrl键并单击特定的组)。现在,右侧显示的属性将应用于所有选定的列。
在下面显示的示例中,我将所有选定的列都设置为255的宽度。
| 归档时间: |
|
| 查看次数: |
2336 次 |
| 最近记录: |