BCP 数据导入问题 Unix系统中的文本文件换行符引发的问题

本文讨论了在处理UNIX数据文件(行末为<LF>)与Windows下<CR><LF>(回车换行)格式不一致时,通过转换TXT文件格式以解决BCP导入数据报错的问题。提供了将UNIX格式文件转换为Windows格式的简单脚本方法,并演示了转换后数据能够正常读入数据库的过程。

UNIX 数据文件(行末为<LF>)Windows下的<CR><LF>(回车换行)

文件末尾格式为C.TXT

A | 12452 | 212 | 1245 | DE | A | <LF>     
A | 12452 | 212 | 1245 | DE | A | <LF>  
A | 12452 | 212 | 1245 | DE | A | <LF>  


 BCP DB1.dbo.Test IN C.TXT   -C -T" | " -r"\n" -U"SA" -P"PWD"

我设置了分割符 \n 但是windows下\n默认是 回车+换行 (<CR><LF>)

因此无法导入数据

报出的错误为:

 

NULL
Starting copy...
SQLState = 22001, NativeError = 0
Error = [Microsoft][SQL Native Client]String data, right truncation
NULL
0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 47    
NULL

 

因为无法在行结束的时候识别出来,所以最后面的字符都被当成最后一列的数据,造成字符长度过长。


查找了很久的资料,最后只能使用转换的方式,把txt文件进行转换后再BCP读入数据库

BAT文件如下:

 

@echo off
(for /f "delims=" %%a in (c.txt) do echo %%a)>转换.txt

 

 

转换后的数据就可以正常读入了。

 

 

转载于:https://www.cnblogs.com/phyllis/archive/2011/05/13/2045429.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值