【问题标题】:Unexpected EOF encountered in BCP data-file在 BCP 数据文件中遇到意外的 EOF
【发布时间】:2019-02-17 02:16:35
【问题描述】:

我正在尝试使用 bcp 将数据从一个表复制到另一个数据库中的另一个表。

首先使用创建格式文件

!! bcp dbName1.dbo.tableName1 format nul  -S serverName1 -T -f D:\tableName1_fmt.txt -n

然后使用创建数据文件

!! bcp dbName1.dbo.tableName1 out D:\tableName1.txt  -S  serverName1 -T -c

现在我尝试使用格式文件将数据文件导入另一个服务器中存在的另一个数据库中的另一个表

!! bcp dbName2.dbo.tableName2 in D:\tableName1.txt -f D:\tableName1_fmt.txt  -S ServerName2 -T -E 

然后产生如下错误

Starting copy...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]Unexpected EOF encountered in BCP data-file

0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 1    

我发现了问题所在。但这与 Stackoverflow 中现有的情况不同。

所以我正在编写我的解决方案,以防遇到同样问题的人可能会受益。

【问题讨论】:

    标签: ssms bcp


    【解决方案1】:

    问题在于创建格式文件和数据文件时的格式说明符-c-n)。

    格式文件 (-n) 和数据文件 (-c) 的格式说明符不同。

    当我将两者的格式说明符更改为 -c-n 时,导入语句起作用了。

    由于保留列的数据类型对我的目的很重要,-n 用于格式化文件和数据文件

    【讨论】:

      【解决方案2】:

      这个谜题的答案是阴险的。 我花了我永远无法回来的时间......

      如果您使用的是 Windows,请使用 NotePad++ 并在菜单上的“编码”下,将其更改为 [UCS-2 LE BOM] 并尝试一下。 LE = 小尾数...

      真是可恶的错误!我刚刚安装了 SQL Server 2019 和最新的 SQLCMD/BCP 工具。似乎这个错误已经存在了一段时间。

      这个人救了我的命:https://shades-of-orange.com/post/Unexpected-EOF-encountered-in-BCP-data-file

      这是我最后使用的线

       bcp my_schema.my_table IN /home/user/data/data.csv -S "127.0.0.1" -d "my-database" -U "sa" -P "myPassWord" -t "," -r "\n" -c -F 2
      

      【讨论】:

        猜你喜欢
        • 2015-03-05
        • 2022-11-11
        • 2014-12-07
        • 2013-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-23
        • 2013-02-03
        相关资源
        最近更新 更多