用DTS工具导入文本文件时(固定字段)只要选择行分隔符为LF就可以顺利导入,但用bcp命令一直无法导入,请问bcp命令应该怎么写?

解决方案 »

  1.   


    /** 导入文本文件
    EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword'/** 导出文本文件
    EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'

    EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword'导出到TXT文本,用逗号分开
    exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password'
    BULK INSERT 库名..表名
    FROM 'c:\test.txt'
    WITH (
        FIELDTERMINATOR = ';',
        ROWTERMINATOR = '\n'
    )
      

  2.   


    执行bcp命令后的结果是:
    开始复制...
    SQLState = S1000, NativeError = 0
    Error = [Microsoft][ODBC SQL Server Driver]在 BCP 数据文件中遇到的意外的 EOF已复制了 0 行。
    数据包的大小(字节): 4096
    时钟时间(毫秒): 共   1734
      

  3.   

    用BULK INSERT 库名..表名 
    FROM 'c:\test.txt' 
    WITH ( 
        FIELDTERMINATOR = ';', 
        ROWTERMINATOR = '\n' 

    显示:大容量插入失败.数据文件中第1行、第9列的列太长,请确保正确地指定了字段终止符和行终止符
      

  4.   


    转换方法:
    http://en.wikipedia.org/wiki/Newline#Conversion_utilities我用的是Cygwin里带的u2d。
      

  5.   

    格式化文件或转格式没格式化文件类似 BULK ... ROWTERMINATOR='\n'
    MS自动帮你加\r变成\r\n,BCP也一样。