我已经使用 SQL Server 的BULK INSERT
任务完成了数百次数据导入,但这次我收到了一个不熟悉的错误,并且我尝试使用 Google 进行故障排除无济于事。以下是我使用逗号分隔文件的代码,其中新行由换行符指示:
BULK INSERT MyTable
FROM 'C:\myflatfile.txt'
WITH (
FIELDTERMINATOR = ','
,ROWTERMINATOR = '/n')
GO
它始终有效,但现在在一个带有日期和速率的简单文件上,它失败,错误为“ Msg 4863, Level 16, State 1, Line 1 Bulk load data conversion error (truncation) for row 1, column 2 (ColumnTwo )。” 当我查看文件时,我不明白为什么会失败(通常 Google 故障排除表明分隔符可能在一行中存在多次,这会引发此错误)。从文件中,这里是前十行(注意它在第一行失败):
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
我将这些数据插入到的表有两个字段 thaare VARCHAR(50)
,即使当我最初看到截断时,我将数据字段扩展为VARCHAR(2000)
它并没有影响它。
CREATE TABLE MyTable (
ColumnOne VARCHAR(50),
ColumnTwo VARCHAR(50)
)
我还尝试删除所有破折号,看看这是否搞砸了(即使我已经使用相同的代码使用破折号进行了大量数据导入,并且它可以正常工作),但它仍然收到相同的错误消息。
与 SSIS 一样,直接导入(通过Tasks
)可以工作,但是这段代码失败了怎么办,因为它应该做完全相同的事情?