首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BCP问题: BCP数据文件中遇到的意外EOF

BCP问题: BCP数据文件中遇到的意外EOF
EN

Database Administration用户
提问于 2017-06-07 13:18:41
回答 2查看 20.1K关注 0票数 4

我有一张表的定义如下:

代码语言:javascript
运行
复制
CREATE TABLE [dbo].[IpMetadata](
    [StartIp] [bigint] NOT NULL,
    [EndIp] [bigint] NOT NULL,
    [CountryCode] [char](10) NOT NULL,
    [ProxyType] [varchar](50) NULL,
    [ProxyDescription] [varchar](50) NULL,
    [IspName] [varchar](100) NULL,
    [MobileCarrier] [varchar](50) NULL,
    [MobileCarrierCode] [varchar](50) NULL,
    [Latitude] [varchar](50) NULL,
    [Longitude] [varchar](50) NULL,
    [PostalCode] [varchar](50) NULL,
    [City] [varchar](50) NULL,
    [Region] [varchar](50) NULL,
    [Country] [varchar](50) NULL,
    [GmtOffset] [varchar](50) NULL,
    [SupportsDaylightSavings] [char](10) NULL,
    [MetroCode] [varchar](50) NULL,
    [AddressCount] [int] NOT NULL,
     CONSTRAINT [PK_IpMetadata] PRIMARY KEY CLUSTERED 
    (
        [StartIp] ASC,
        [EndIp] ASC
    )
)

我有一个UTF-8编码采样文件(D:\data\ipsnip.csv),它以制表符分隔,终止于CRLF的行插入到这个表中,如下所示:

代码语言:javascript
运行
复制
#start-ip   end-ip  edge-two-letter-country proxy-type  proxy-description   isp-name    mobile-carrier  mobile-carrier-code edge-latitude   edge-longitude  edge-postal-code    edge-city   edge-region edge-country    edge-gmt-offset edge-in-dst edge-metro-code address-count
0   0   **                  0   0   0   0   reserved    *** *** +9999   n   -1  0
1   255 **                  0   0   0   0   reserved    *** *** +9999   n   -1  254
256 16777215    **                  0   0   0   0   reserved    *** *** +9999   n   -1  16776959
16777216    16777343    au                  0   -37.7596    145.134 3106    templestowe vic aus +1000   n   36211   127
16777344    16777407    au                  0   -37.7596    145.134 3106    templestowe vic aus +1000   n   36211   63
16777408    16777471    au                  0   -37.7596    145.134 3106    templestowe vic aus +1000   n   36211   63
16777472    16778239    cn          chinanet fujian province network        0   26.0786 119.298 350000  fuzhou  35  chn +800    n   156115  767
16778240    16779263    au          big red group       0   -37.8387    144.99  3141    south yarra vic aus +1000   n   36206   1023
16779264    16781311    cn          chinanet guangdong province network     0   30.6611 104.082 510000  guangzhou   44  chn +800    n   156196  2047
16781312    16785407    jp          i2ts inc.       0   35.6838 139.754 100-0001    tokyo   13  jpn +900    n   -1  4095

我像这样运行BCP命令:

代码语言:javascript
运行
复制
bcp MyDatabase.dbo.IpMetadata in D:\data\ipsnip.csv -F2 -Slocalhost -n -T

我得到了这样的回复:

代码语言:javascript
运行
复制
Starting copy...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]Unexpected EOF encountered in BCP data-file

BCP copy in failed

我已经尝试显式地指定列和行终止符。我尝试过使用unicode列定义。我试过把线路末端改为LF而不是CRLF。我试过用分号/管道来代替现场终端机。我试过-n-N。我不知道还能尝试什么。有人能帮忙吗?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-06-07 15:37:20

因此,事实证明,-n-N不是我想要的;我以为它使用db元数据隐式转换传入的数据,但看起来它期待的是二进制数据。

我把它改成了-c,没有问题。

票数 2
EN

Database Administration用户

发布于 2019-06-13 18:42:24

雅各布在这个问题下的评论帮助了我!

列1中真的有散列吗?您试过只使用1行数据吗?>或-w用于unicode字符(我想您已经检查过了,但认为这是值得一提的)- 雅各布H 6月7日14:37

在代码中添加-w有助于导入我的文件。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/175654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档