我有源文件,其中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) )
答案 0 :(得分:1)
您需要引用管道。管道(字符|)用于重定向命令行的标准输出
以下简化行适用于您的样本
bcp.exe [db].dbo.[table1] in "path\Data.dat" -S".\instance" -T -c -t"|"
我省略了错误限制-m
,日志-e
和表锁提示-h
,但这些不应该影响导入,但是如果您仍有问题,请尝试引用类似的参数服务器名称和文件名
我使用\r\n
预期的标准-c
行终结符的文本文件