批量插入失败"批量加载数据转换错误(截断)"

Tim*_*Tim 2 bulkinsert data-import sql-server-2008

我已经完成了BULK INSERT数百次SQL Server 任务的数据导入,但这次我收到了一个不熟悉的错误,而且我已经尝试过排除故障而无法使用Google.以下是我使用逗号分隔文件的代码,其中新行由换行符表示:

BULK INSERT MyTable
FROM 'C:\myflatfile.txt'
WITH (
    FIELDTERMINATOR = ','
    ,ROWTERMINATOR = '/n')
GO
Run Code Online (Sandbox Code Playgroud)

它始终有效,但现在在一个带有日期和速率的简单文件上,它失败了" Msg 4863,Level 16,State 1,Line 1 Bulk load数据转换错误(截断)第1行第2列(ColumnTwo) )." 当我查看该文件时,我不明白为什么会失败(通常Google故障排除表明分隔符可能在一行中多次出现,这会引发此错误).从文件中,这里是前十行(注意它在FIRST行上失败):

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
Run Code Online (Sandbox Code Playgroud)

我正在插入这些数据的表有两个字段VARCHAR(50),即使我最初看到截断时我将数据字段扩展到了VARCHAR(2000)它并没有影响它.

CREATE TABLE MyTable (
    ColumnOne VARCHAR(50),
    ColumnTwo VARCHAR(50)
)
Run Code Online (Sandbox Code Playgroud)

我也尝试删除所有的破折号,看看是不是搞乱了事情(即使我使用相同的代码完成了大量的破折号数据导入并且它没有错误),并且它仍然收到相同的错误消息.

直接导入Tasks与SSIS一样工作(通过),但是这个代码失败了,因为它应该做同样的事情?

Eko*_*tin 12

由于文件格式,问题可能是行终止符无法正常工作.

尝试:

ROWTERMINATOR = '0x0a'
Run Code Online (Sandbox Code Playgroud)

编辑

实际上我只是注意到你正在使用正斜杠,它应该是反斜杠,所以这可能有效:

ROWTERMINATOR = '\n'
Run Code Online (Sandbox Code Playgroud)