为什么SSIS在导入UTF-8平面文件时不识别换行{LF}行分隔符?

时间:2011-06-07 16:04:41

标签: sql-server sql-server-2008 utf-8 ssis flat-file

我正在尝试使用SSIS将数据从utf-8编码的平面文件导入SQL Server 2008。这就是Notepad ++中行数据的结尾:

enter image description here

我还有几张图片展示了文件连接管理器的样子:

enter image description here

enter image description here

您可以在文件连接管理器预览中看到数据正确显示。当我尝试导入此数据时,不导入任何行。我收到一条错误消息,指出未找到行分隔符。您可以在文件连接管理器映像中看到标题行分隔符和行分隔符都设置为{LF}。这足以生成正确的预览,所以我迷失了为什么它无法导入。我尝试过很多结果为零的事情:

  • 尝试使用SSMS中的向导导入...相同的结果
  • 尝试使用数据转换,没有影响
  • 尝试将行分隔符设置为(0a),结果相同
  

[平面文件来源[582]]警告:   到达数据文件的末尾   读标题行。确保   标题行分隔符和数字   要跳过的标题行是正确的。

感谢您查看此内容,我非常感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:62)

答案 1 :(得分:1)

上面的答案看起来非常复杂,只需转换文件中的行结尾

即可
Dim FileContents As String = My.Computer.FileSystem.ReadAllText("c:\Temp\UnixFile.csv")

Dim NewFileContents As String = FileContents.Replace(vbLf, vbCrLf)

My.Computer.FileSystem.WriteAllText("c:\temp\WindowsFile.csv", NewFileContents, False, New System.Text.UnicodeEncoding)

here

重新开始

答案 2 :(得分:0)

如果您尝试通过Windows上的SSIS使用在Unix,Mac等其他平台上生成的FlatFile,也会出现此问题

在这种情况下,您需要做的就是使用unix2dos命令将文件格式从UNIX转换为DOS

unix2dos file-to-convert