代码之家  ›  专栏  ›  技术社区  ›  Mike Marks

大容量插入-数据文件中第1行第36列的列太长[重复]

  •  0
  • Mike Marks  · 技术社区  · 7 年前

     BULK INSERT TestDB.dbo.patent
     FROM 'C:\1patents.csv'
     WITH (FIRSTROW = 1,  FIELDTERMINATOR = '^', ROWTERMINATOR='\n');
    

    消息4866,16级,状态1,行1
    批量加载失败。数据文件中第1行第6列的列太长。
    验证是否正确指定了字段终止符和行终止符。
    消息7399,16级,状态1,行1

    消息7330,16级,状态2,行1
    无法从链接服务器(null)的OLE DB提供程序“BULK”中获取行。

    这是第一行的数据--

     00000001^^18360713^295^4^0
    

    我做错什么了?为什么会出现上述错误?

    0 回复  |  直到 13 年前
        1
  •  59
  •   GitaarLAB    11 年前

    我从Oracle/Unix中提取了数据。我替换了 \r\n 通过 ROWTERMINATOR = '0x0a' 这对我很有效。
    谢谢!

        2
  •  26
  •   comendeiro    10 年前

    ROWTERMINATOR = '\n' 我也试着用 '\r\n' '\r' . 他们都没用。

    ROWTERMINATOR = '0x0a' 这张桌子没有问题。

    我不知道这背后的“原因”,希望有人能解释清楚。

        3
  •  4
  •   Eric J.    13 年前

    除非文件源是Unix,否则文件的行终止符很可能是

    可以使用十六进制编辑器来验证文件的终止符,也可以尝试将其作为行终止符。

        4
  •  2
  •   Sai Bhasker Raju    8 年前

    我也遇到了类似的问题,我知道除非文件是UNIX类型的 \\r\n

    .fmt或.xml ),注意左边的第三列。它叫 最小长度 列的。有时sql server会将其默认为 尽管你在create脚本中没有提到。将该值更改为 . 有时您可能还必须允许NULL,所以将其更改为零,它现在就可以工作了