如果第一列为空,则BCP无效

时间:2015-09-02 10:59:15

标签: sql-server bcp

我有源文件,其中90%的第一个字段为空。我想用BCP实用程序将此文件加载到SQL Server表。当我运行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。这里BCP无法识别   记录。由于这个BCP正在尝试将下一个记录数据加载到最后   导致数据截断的字段。

表架构

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

1 个答案:

答案 0 :(得分:1)

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

以下简化行适用于您的样本

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

我省略了错误限制-m,日志-e和表锁提示-h,但这些不应该影响导入,但是如果您仍有问题,请尝试引用类似的参数服务器名称和文件名

我使用\r\n预期的标准-c行终结符的文本文件