【问题标题】:Bulk Insert Not working批量插入不起作用
【发布时间】:2016-09-24 05:01:42
【问题描述】:

我有一个批量插入查询,如下所示

BULK INSERT tmp_table FROM 'file.jrl' 
WITH ( 
              DATAFILETYPE='widenative' , 
              FIELDTERMINATOR = '~' , 
              MAXERRORS = 0 , 
              ROWS_PER_BATCH = 116064 , 
              ROWTERMINATOR  = '0x0a' , 
              TABLOCK  )

它给了我以下错误

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

消息 7399,第 16 级,状态 1,第 1 行 链接服务器“(null)”的 OLE DB 提供程序“BULK”报告了错误。提供者没有提供有关错误的任何信息。

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

我正在使用 DATAFILETYPE='widenative' ,因为我的数据包含一些特殊字符,如 Ñ、Ã 等 对于 RowTerminator 值,我还检查了 '\n'

我的列分隔符是 ~。我有什么需要改变的吗? 我的样本数据如下

12345 ~asdfdfdfd ~ ~ ~ ~ ~0000000000~ ~0000000000~ ~rrrrñtttttt ~

【问题讨论】:

  • 错误很明显 - 您的表格列比文件中第 1 行第 1 列的值短,即12345 。表架构在哪里?你注意到数字后面的多余空格了吗?
  • @Panagiotis Kanavos,95% 的 BULK INSERT 返回的错误消息与实际原因几乎没有共同之处。
  • @captainsac,看看这个:social.msdn.microsoft.com/Forums/sqlserver/en-US/…。还要确保文件中的列数永远不会改变。
  • 缺少任何其他信息,我会先检查列大小。此外,看起来无关紧要的事情实际上可能是正确的。
  • @Alex 您发布的内容只是证明输入文件的格式不正确。 BULK INSERT 不是 CSV 导入工具,它是从确实遵循格式的文件中快速批量导入工具。如果需要任何类型的转换,则应使用 SSIS

标签: sql-server-2012 bulkinsert


【解决方案1】:

您在 BioWare 工作吗?

无论如何, 这里的问题不是来自行终止符。错误消息告诉您,第一个错误发生在第一列,因此您的字段终止符有问题。

我赌的是数据文件类型。尝试使用“widechar”而不是“widenative”。本机字段终止符为 \t,使用本机将使 BULK 忽略 FIELDTERMINATOR 选项。

WKR。

【讨论】:

    猜你喜欢
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 2013-10-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多