当运行管理工作室下面的代码时,会显示一个错误,其中包含了该错误。
我需要通过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
答案 0 :(得分:2)
这似乎是一个character
问题,您可以尝试使用另一个问题§
。
你只需要做一些调整:
FIELDTERMINATOR = '§'
您的01-Pais.txt
文件:
Brasil§01058
更新:似乎混合了数据库整理和文件编码问题,可能会弄乱
bulk
操作。将文件保存为ANSI
,而不是UTF-8
似乎已纠正原始问题。似乎也使用CODEPAGE=1252
或DATAFILETYPE = 'widechar'
来解决问题。