如果第一列为空,则 BCP 不工作

BCP is not working if first column is empty

我有一个源文件,其中第一个字段的 90% 是空的。我想使用 BCP 实用程序将此文件加载到 SQL 服务器 table。当我 运行 BCP 命令时,BCP 实用程序无法识别或区分记录。
我的源文件有如下数据。

|100168|27238800000|14750505|1|273 |100168|27238800000|14750505|1|273 |100681|88392930052|37080101|1|252 |101014|6810000088|90421505|12|799 |101595|22023000000|21050510|8|780

我正在使用

 **bcp [DBNAME].[dbo].[TABLE1] in \filelocation\filename -e \filelocation\filename_Error.txt -c -t | -S ServerName -T -h TABLOCK -m 1** 


我在 error.txt

中收到错误消息

as #@ Row 1, Column 28: String data, right truncation @# 100168 27238800000 14750505 1 273
100168|27238800000|14750505|1|273. Here BCP is not able to recognize records. Due to this BCP is trying loaded next record data into last field which is causing data truncation.

Table 架构是

CREATE TABLE [DBO].[TABLE1](  
FLD1 VARCHAR(10)  
,FLD2 VARCHAR(10)  
,FLD3 VARCHAR(22)  
,FLD4 VARCHAR(15)  
,FLD5 VARCHAR(10)  
,FLD6 VARCHAR(12) )

你需要引用管道。管道(字符|)用于重定向命令行的标准输出

以下简化的行适用于您的示例

bcp.exe [db].dbo.[table1] in "path\Data.dat" -S".\instance" -T -c -t"|"

我省略了错误限制-m、日志-e和table锁定提示-h,但这些应该不会影响导入,但如果您仍然有一个问题尝试引用服务器名称和文件名等参数

我使用了一个带有标准 \r\n 行终止符的文本文件,正如 -c

所期望的那样