【问题标题】:BCP is not working if first column is empty如果第一列为空,则 BCP 不起作用
【发布时间】:2015-09-03 08:00:14
【问题描述】:

我有一个源文件,其中第一个字段的 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 #@ 第 1 行,第 28 列:字符串数据,右截断 @# 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) )

【问题讨论】:

    标签: sql-server bcp


    【解决方案1】:

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

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

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

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

    正如-c 所期望的那样,我使用了带有标准\r\n 行终止符的文本文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多