【问题标题】:bcp doesn't show any errors, but doesn't copy any rows. I have xn xml format filebcp 不显示任何错误,但不复制任何行。我有 xn xml 格式文件
【发布时间】:2019-01-19 23:22:57
【问题描述】:

我使用的是通过 bcp 生成的 xml 格式文件,所以我认为不是这样。我的 .bcp 文件是 20 Gigs!这是我正在使用的批处理文件:

bcp MyInputDB.dbo.mytable  format nul -S sourceserver\instance2 -c -x -f mytable.xml -t, -U user1 -P pw1
pause
title Start Time %time% Total number of rows is 275606414
bcp MyInputDB.dbo.mytable out "mytable2.bcp" -S sourceserver\instance2 -f mytable.xml -U user1 -P pw1 -c
echo Completed at  %time%
pause
title Start Time %time% Total Number of Rows is 275606414
bcp MyOutputDB.dbo.mytable in C:\mypath\mytable2.bcp -S MyHostName\MyInstance -f mytable.xml -U user2 -P pw2    
echo Completed at  %time%

我明白了:

Starting copy...

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

我的 .bcp 文件的几行如下所示:

953     10      0       2019-01-12 19:09:41.480
953     20      0       2019-01-12 19:12:06.397

然而,mytable.xml 格式文件看起来像:

 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="12"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="21"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="1"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
 </RECORD>

这似乎不太合适。看起来它需要一个 .csv 文件。有什么办法可以将分隔符更改为制表符?

【问题讨论】:

  • 您的文件示例中没有逗号,请尝试将格式文件中的逗号替换为\t

标签: sql-server tsql bcp


【解决方案1】:

当 BCP 正确处理文件并且您得到 0 行时,这通常意味着 BCP 没有找到它被告知要查找的分隔符。它搜索并搜索了整个文件,没有找到您在格式文件中指定的分隔符链(或者它默认使用的)。

正如 Roger 所说,该文件似乎是制表符分隔的,但您的格式文件将第一列指定为具有逗号分隔符。

因此,BCP 逐字节读取,并且在到达文件末尾之前从未找到逗号……因此,没有要加载的数据。 BCP 运行成功,您没有加载任何行。

【讨论】:

    猜你喜欢
    • 2013-04-24
    • 2020-08-09
    • 2020-06-22
    • 2016-07-04
    • 1970-01-01
    • 2012-07-21
    • 2013-12-01
    • 1970-01-01
    • 2016-02-11
    相关资源
    最近更新 更多