BCP 固定宽度导入 -> BCP 数据文件中遇到意外的 EOF?

BCP Fixed Width Import -> Unexpected EOF encountered in BCP data-file?

我有一些敏感信息需要导入 SQL 服务器,这被证明是一个挑战。我不确定包含此信息的原始数据库是什么,但我知道它是在带有 LF 行终止符的 Unix 固定长度文本文件中提供给我们的。我有两个文件:一个包含一个月数据的小文件,以及一个包含 5 年数据的大文件。我已经创建了一个 BCP 格式的文件和命令,成功地将数据导入并映射到我的 SQL 服务器 table。

5 年的数据应该是相同的格式,所以我在文本文件上使用了相同的命令和格式文件。它开始处理一些记录,但在处理的某个地方(几千条记录之后),它抛出遇到意外的 EOF 我可以在数据库中看到一些行根据固定长度正确映射,但随后出现了可怕的错误并且通过将部分数据插入到它们绝对不属于的列中而搞砸了。是否有一个字符会导致 BCP 混乱并提前终止?

BCP Command: BCP DBTemp.dbo.svc_data_temp in C:\Test\data2.txt -f C:\test\txt2.fmt -T -r "0x0A" -S "stageag,90000" -e log.rtf

同样,格式文件和命令对于较小的数据集来说工作得很好,但是 5 年数据集中的某些东西搞砸了 BCP。

在此先感谢您的回复!

所以我在我的固定宽度文件中发现了违规字符。不知何故,无论谁最初提取数据(我无权访问源代码),转义(或未正确转义)某些文本中的双引号,导致一些额外空格的注入打破了我们假设的固定宽度准则被跟随。通过十六进制编辑文件更正双引号后,BCP 能够毫无问题地使用格式文件处理所有记录。我曾使用 -F 和 -L 标志来检查某些数据行并将其缩小到我可以直观地比较正常行和问题开始出现的行的位置,这使我发现了双重报价问题。如果其他人遇到与此类似的问题,希望他能对他们有所帮助!