批量INSERT不插入数据

时间:2017-06-13 18:01:32

标签: sql sql-server bulkinsert bulk

当运行管理工作室下面的代码时,会显示一个错误,其中包含了该错误。

我需要通过BULK INSERT将简单的文本数据插入到表中。插入代码如下:

BULK INSERT Pais FROM 'C:\[bulkdata]\shared\01-Pais.txt' 
WITH(MAXERRORS = 0, CODEPAGE = 'ACP', FIELDTERMINATOR = 'ø', ROWTERMINATOR = '\n', KEEPNULLS,
ERRORFILE = 'C:\[bulkdata]\shared\teste.txt')

我用来测试此命令的文件只有一行用于插入数据, 的 teste.txt:

BrasilØ01058

返回的错误如下:

Msg 4832, Level 16, State 1, Line 1
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

teste.txt:

BrasilØ01058BrasilØ01058

在我看来,这是尝试在同一行上插入两次值,但正如设置所示,它通常会插入到其他项目中。我的用户可以未经许可吗?我已经创建了具有所有权限的特定用户,并且还为服务器设置了执行批量操作的权限。

teste.txt.Error.Txt:

Row 1 File Offset 0 ErrorFile Offset 0 - HRESULT 0x80004005

enter image description here

1 个答案:

答案 0 :(得分:2)

这似乎是一个character问题,您可以尝试使用另一个问题§。 你只需要做一些调整:

FIELDTERMINATOR = '§'

您的01-Pais.txt文件:

Brasil§01058     
  

更新:似乎混合了数据库整理和文件编码问题,可能会弄乱bulk操作。将文件保存为ANSI,而不是UTF-8似乎已纠正原始问题。似乎也使用CODEPAGE=1252DATAFILETYPE = 'widechar'来解决问题。