我已经完成了数据导入与SQL Server的BULK INSERT
任务数百次,但这次我收到一个不熟悉的错误,并且我尝试了解疑难解答Google无济于事。以下是我在新行被新行字符表示逗号deliminated文件中使用的代码:批量插入失败“批量加载数据转换错误(截断)”
BULK INSERT MyTable
FROM 'C:\myflatfile.txt'
WITH (
FIELDTERMINATOR = ','
,ROWTERMINATOR = '/n')
GO
它始终如一地努力,但现在有一个日期和速率的简单的文件,它与失败错误“消息4863,级别16,状态1,行1批量加载数据转换错误(截断)为第1行,第2列(ColumnTwo)。”当我查看文件时,我不明白为什么会失败(通常Google故障排除表明分隔符可能存在多行,这会引发此错误)。从文件,这里是第10行(注意,它无法在第一行):
1961-01-01,8.2
1961-02-01,8.2
1961-03-01,7.4
1961-04-01,7.6
1961-05-01,7.8
1961-06-01,8.5
1961-07-01,9.1
1961-08-01,8.8
1961-09-01,8.4
1961-10-01,8.8
表,我将这些数据转换成有两个字段thare是VARCHAR(50)
,即使当我最初看到截断我扩大了数据字段到VARCHAR(2000)
,它并没有影响它。
CREATE TABLE MyTable (
ColumnOne VARCHAR(50),
ColumnTwo VARCHAR(50)
)
我也试图消除所有的破折号,看看是否被搞乱的东西(虽然我已经做了充足的数据进口使用相同的代码破折号和它的作品没有错误),它仍然收到相同的错误信息。
与SSIS一样,直接导入工作(通过Tasks
),但该代码失败了,因为它应该完成同样的事情?
谢谢;我怎么能区分它是'/ n'还是'0x0a',就像文件中它看起来是一个新的行字符一样?在此之前我没有看过这个。 – Tim 2013-03-01 15:37:53
如果您的文件来自基于UNIX的系统,则应该正常使用'0x0a'(因为UNIX仅使用\ n - 换行符作为终止符)。如果你的文件是基于Windows的,即使你只指定了\ n(这是回车和换行符),bulkcopy实际上也会使用\ r \ n。 – EkoostikMartin 2013-03-01 15:43:50