我正在使用SSIS将数据从平面文件插入数据库。
我为此创建了数据流任务。我使用Flat File作为Source和ADO NET Destination来插入数据。
以下是我的设置对于平面文件源的设置。
以下是我的" Columns"标签看起来像
当我运行使用BIDS和数据被正确插入数据库时,这项工作很精细。当局部运行时,它甚至可以与DTEXEC.EXE一起使用。
现在,问题是使用dtexec.exe在服务器上执行包。在服务器上,正确插入数据,但在将数据插入数据库时完全忽略给定的文本限定符(双引号)。当地运行时,同样的工作非常精细。我在下面附上了图片,了解它是如何存储在数据库中的。
我在本地和远程服务器上检查了SQL SERVER版本和SSIS版本,两者都是相同的。
可能是什么问题?有人可以帮忙吗?
答案 0 :(得分:2)
所以我找到了解决这个问题的方法。感谢 LukeBI 回答here
创建一个名为 TextQualifier 的字符串变量,并赋值“(双引号)
选择连接管理器,然后在“属性”窗口中选择“表达式”。见下文。
单击 ... ,添加属性'TextQualifier'并分配变量@ [User :: TextQualifier]。见下图
现在它的工作正常。它现在甚至可以在64位操作系统上运行。
答案 1 :(得分:1)
在平面文件来源中,点击"列"。确保在预览数据时预览中没有引号。否则,您可能需要回顾一下您的文件,并确保文本限定符和分隔符都正确。
如果这不起作用,请截取"列"屏幕以及发布它。实际文件布局的屏幕截图也会有所帮助。希望这有帮助!
答案 2 :(得分:1)
在平面文件连接管理器中,在" Advanced"选项,您应该看到每个字段的不同参数的视图。您将看到每个字段都有一个Name,ColumnDelimiter,一堆淡出字段和DataType以及一个选择文件是否合格。
在那里,您应该通过将 TextQualified 选项设置为 true 来指定您希望确定为文本的列。