zoukankan      html  css  js  c++  java
  • BCP 数据导入问题 Unix系统中的文本文件换行符引发的问题

    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

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

  • 相关阅读:
    Maximum sum
    走出迷宫
    取石子游戏
    全排列
    BZOJ3456 城市规划
    【SHOI2016】黑暗前的幻想乡
    【AHOI2012】信号塔
    HDU5730 Shell Necklace
    线性常系数齐次递推关系学习笔记
    矩阵树定理学习笔记
  • 原文地址:https://www.cnblogs.com/huige1004/p/2267761.html
Copyright © 2011-2022 走看看