我正在使用Flat File Connection Manager将SQL视图导入SSIS。 SQL中的一个列中包含逗号。 (123 Main St,Boston,MA)。当我将数据导入SSIS时,列中的逗号被视为分隔符,我的列被分成几列。我已经在网上做了很多研究,并且遵循了一些对我不起作用的解决方法。
在SQL Server中,我在其中包含逗号的值周围添加了双引号。
' "'+CAST(a.Address as varchar(100))+'" '
所以,马萨诸塞州波士顿市123 Main St现在读到“123 Main St,Boston,MA”
然后在我的SSIS平面文件连接管理器中,
在常规标签中:
文字限定符设为“
标题行分隔符设置为{CR} - {LF}
在列标签中:
行分隔符设置为{LF}
列分隔符设置为逗号{,}
在高级标签中,我的所有列都将文本限定设置为True。
完成所有这些后,我的列中包含逗号,仍然被分成多个列。我错过了一步吗?如何让SSIS包将我的地址列视为一列而不是将其分成几列?
编辑:只是为了添加更多细节。我从一个SQL视图中提取,该视图在其中包含逗号的任何字段周围都有双引号。然后我通过电子邮件发送该文件并在MS Excel中打开它。当我打开它时,文件如下:
123 Main St Boston MA" " (在三个单元格中)
我需要将其视为
123 Main St,Boston,MA(在一个牢房中)
答案 0 :(得分:0)
看看这个 - Commas within CSV Data
如果列中有逗号,则应该包围该列 单引号或双引号。然后如果在那个栏内有 单引号或双引号它应该有一个逃脱宪章, 通常是\
CSV的示例格式
ID - address - name
1, "Some Address, Some Street, 10452", 'David O\'Brian'
另请查看这些资源。
答案 1 :(得分:0)
我最终使用我的问题中列出的相同参数重新创建了包。我也替换了这个
' "'+CAST(a.Address as varchar(100))+'" '
在我的SQL视图中使用它
a.Address
它现在按照需要运行。不知道那里发生了什么。感谢大家的意见和建议。