SQL Server 2005批量插入格式文件错误

时间:2011-12-01 09:12:53

标签: sql-server-2005 csv bulkinsert

错误列表

  

Msg 4866,Level 16,State 7,Line 2
  批量加载失败。第1行第1列的数据文件中的列太长。   验证是否正确指定了字段终止符和行终止符。

     

Msg 7399,Level 16,State 1,Line 2
  链接服务器“(null)”的OLE DB提供程序“BULK”报告错误。   提供商没有提供有关错误的任何信息。

     

Msg 7330,Level 16,State 2,Line 2
  无法从OLE DB提供程序“BULK”获取链接服务器“(null)”。

的行

fmt文件

9.0
10
1       SQLCHAR       2       50      ","   2     EmployeeSSN       SQL_Latin1_General_CP1_CI_AS                    
2       SQLCHAR       2       50      ","   3     DOB               SQL_Latin1_General_CP1_CI_AS                       
3       SQLCHAR       2       50      ","   4     Gender            SQL_Latin1_General_CP1_CI_AS                       
4       SQLCHAR       2       50      ","   5     Relcode           SQL_Latin1_General_CP1_CI_AS                          
5       SQLCHAR       2       50      ","   6     EmployeeID           SQL_Latin1_General_CP1_CI_AS                      
6       SQLCHAR       2       50      ","   7     AssessmentType       SQL_Latin1_General_CP1_CI_AS                    
7       SQLCHAR       2       50      ","   8     MeasurementDate      SQL_Latin1_General_CP1_CI_AS                       
8       SQLCHAR       2       50      ","   9     RecordCreationDate   SQL_Latin1_General_CP1_CI_AS                    
9       SQLCHAR       2       50      ","   10    AttributeID       SQL_Latin1_General_CP1_CI_AS                              
10      SQLCHAR       2       50      "/r/n"   11   AttributeValue    SQL_Latin1_General_CP1_CI_AS

批量插入代码

BULK insert *******_raw_data
from 'E:\*****_csv\BWC_To_*****_2.csv'
with (formatfile = 'c:\*******_raw_data-n.fmt');

来自csv的第一行

NULL,07/14/1983,F,S,105***,HRA,09/28/2011,09/28/2011,19,1

我试图弄清楚我在哪里出错了......我已经得到了其他文件但是这个文件没有成功。我的代码中的文件名称是正确的,因为它们是公司名称

1 个答案:

答案 0 :(得分:1)

第一个错误: Msg 4866,Level 16,State 7,Line 2 批量加载失败。第1行第1列的数据文件中的列太长。验证是否正确指定了字段终止符和行终止符。

这是NULL或行终止符的问题。 该行的最后一个终结符可能不是“/ r / n”,它可能是“/ n”。最好使用十六进制编辑器确认。

第二和第三错误: 这些都看起来像一个NULL问题。

在BULK INSERT中处理空值的正确方法是指定KEEPNULLS选项。

with (formatfile = 'c:\*******_raw_data-n.fmt',KEEPNULLS);

使用空字段为NULL值创建csv文件。

,07/14/1983,F,S,105***,HRA,09/28/2011,09/28/2011,19,1