SSIS平面文件源文本限定符被忽略

时间:2015-06-19 12:40:06

标签: sql-server ssis

我正在使用SSIS将数据从平面文件插入数据库。

我为此创建了数据流任务。我使用Flat File作为Source和ADO NET Destination来插入数据。

以下是我的设置对于平面文件源的设置。

Flat File Settings

以下是我的" Columns"标签看起来像

ColumnsTab

当我运行使用BIDS和数据被正确插入数据库时​​,这项工作很精细。当局部运行时,它甚至可以与DTEXEC.EXE一起使用。

现在,问题是使用dtexec.exe在服务器上执行包。在服务器上,正确插入数据,但在将数据插入数据库时​​完全忽略给定的文本限定符(双引号)。当地运行时,同样的工作非常精细。我在下面附上了图片,了解它是如何存储在数据库中的。

Data Inserted into Database

我在本地和远程服务器上检查了SQL SERVER版本和SSIS版本,两者都是相同的。

可能是什么问题?有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

所以我找到了解决这个问题的方法。感谢 LukeBI 回答here

创建一个名为 TextQualifier 的字符串变量,并赋值“(双引号)

选择连接管理器,然后在“属性”窗口中选择“表达式”。见下文。

Expressions property

单击 ... ,添加属性'TextQualifier'并分配变量@ [User :: TextQualifier]。见下图

Add Property

现在它的工作正常。它现在甚至可以在64位操作系统上运行。

答案 1 :(得分:1)

在平面文件来源中,点击"列"。确保在预览数据时预览中没有引号。否则,您可能需要回顾一下您的文件,并确保文本限定符和分隔符都正确。

如果这不起作用,请截取"列"屏幕以及发布它。实际文件布局的屏幕截图也会有所帮助。希望这有帮助!

答案 2 :(得分:1)

平面文件连接管理器中,在" Advanced"选项,您应该看到每个字段的不同参数的视图。您将看到每个字段都有一个Name,ColumnDelimiter,一堆淡出字段和DataType以及一个选择文件是否合格。

在那里,您应该通过将 TextQualified 选项设置为 true 来指定您希望确定为文本的列。

Notice it is false in this example