Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 为什么SSIS OLE DB导入没有导入文本文件的最后一行?_Sql Server 2008_Ssis_Io_Oledb_Flat File - Fatal编程技术网

Sql server 2008 为什么SSIS OLE DB导入没有导入文本文件的最后一行?

Sql server 2008 为什么SSIS OLE DB导入没有导入文本文件的最后一行?,sql-server-2008,ssis,io,oledb,flat-file,Sql Server 2008,Ssis,Io,Oledb,Flat File,我在SSIS 2008中创建了一个基本数据流任务,它从基本文本文件中读取信息并将其导入数据库。文件用以{CR}{LF}结尾的行分隔,每个字段由一个垂直条{|}分隔 我已经验证了我要导入的文件中的每一行都以{CR}{LF}结尾,但是由于某种原因,它没有导入文件中的最后一行。如果只有一行,则不会将其导入数据库 在文件连接管理器中,显示预览中的所有行,在我当前的情况下为5行。此外,在平面文件源编辑器中的预览中,它显示所有5行,但在OLE DB目标中,预览仅显示4行。你知道这是什么原因吗?谢谢 有时要正

我在SSIS 2008中创建了一个基本数据流任务,它从基本文本文件中读取信息并将其导入数据库。文件用以{CR}{LF}结尾的行分隔,每个字段由一个垂直条{|}分隔

我已经验证了我要导入的文件中的每一行都以{CR}{LF}结尾,但是由于某种原因,它没有导入文件中的最后一行。如果只有一行,则不会将其导入数据库


在文件连接管理器中,显示预览中的所有行,在我当前的情况下为5行。此外,在平面文件源编辑器中的预览中,它显示所有5行,但在OLE DB目标中,预览仅显示4行。你知道这是什么原因吗?谢谢

有时要正确读取这些文件,需要在最后一行的末尾有一个回车符,从而在末尾创建一个空行


如果文件不是这样提供的,那么您可能需要一个脚本组件来修改它。

请参阅上的最后一个答案。将所有列的平面文件对象TextQualified值设置为false修复了我的问题。

我认为这是SSIS的一个错误。我在两个版本10.0.5500.0和10.0.2531.0上测试了它。此问题在10.0.5500.0中确实出现,但在over版本中确实出现。为了解决旧版本中的问题,我必须在文件末尾添加一个额外的cr lf,并将文本限定值设置为false,正如user1298950所写。

我在SQL Server 2008 R2中得到了相同的结果。经过大量搜索和梳理,发现安装SQL Server 2008 R2 SP2解决了问题。请注意,此错误不是SP2发行说明的一部分,但它会解决它。

我尝试编辑该文件,并在最后添加了一个额外的CRLF,但没有任何帮助。我甚至尝试添加多个,但没有改变任何事情。我甚至尝试在最后一行之前处理1行,但它仍然没有像应该的那样添加两次,因为表中没有主键。你最终实现了吗?从上面的评论来看,您似乎仍然有问题。我也有这个问题没有解决办法。额外的CRLF仍然不工作。我检查过了,我确实安装了SP2。我已经有很多人看过了,但从那以后就再也没有了。这是一个超级基本的读取文件导入到数据库中,并不会导致丢失最后一行。尝试关闭SSI,但也无济于事。我唯一能想到的就是重建它,看看这是否有帮助。我已经有了记事本+,并且仔细检查了它是否在最后有了{CR}{LF}。这就是为什么它没有成功,因为它跳过了最后一行。