2009-08-18 47 views
1

我在将数据批量插入SQL Express 2005数据库时遇到问题。SQL Server Express 2005中的大容量插入操作不起作用

我用下面的代码:

BULK INSERT [dbEPi].[dbo].[postcode] 
FROM 'C:\Development\postnummerRegister.txt' 
WITH 
(
    FIELDTERMINATOR = '\t', 
    ROWTERMINATOR = '\n' 
) 

,我得到以下错误:

Msg 4866, Level 16, State 1, Line 1 
The bulk load failed. The column is too long in the data file for row 1, column 5. Verify that the field terminator and row terminator are specified correctly. 
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)". 

我试图导入,can be located here的数据文件。

任何帮助appreaciated。

更新1 下面是我使用的数据的一个例子:2

我现在管理导入这些

0001 OSLO 0301 OSLO K 
0010 OSLO 0301 OSLO F 
0014 OSLO 0301 OSLO K 
0015 OSLO 0301 OSLO K 
0016 OSLO 0301 OSLO K 
0017 OSLO 0301 OSLO K 
0018 OSLO 0301 OSLO G 
0020 OSLO 0301 OSLO K 
0021 OSLO 0301 OSLO K 

更新。我所做的只是将文本复制到一个新文件中,并将其另存为test.txt。我不知道为什么这个工作。这可能是由于文件编码。该文件是UTF8编码的。

+0

嗨,我不能完全肯定只是一些最后一个字段后检查是有\ t时之前\ n? – IordanTanev 2009-08-18 08:46:50

+0

最后一个字段后没有标签。只是行结束符。 – Steven 2009-08-18 09:05:22

回答

2

首先,行终结符似乎是文件中的窗口行尾0D 0A。 (CR LF)。我相信这转换为\r\n。但问题仍然存在。

似乎有一个修补程序从MS http://support.microsoft.com/kb/935446

+0

我也试过\ r \ n,但得到了相同的错误信息。 – Steven 2009-08-18 09:03:55

+0

查看修复程序链接 – pjp 2009-08-18 09:07:50

+0

我现在设法导入它们。我所做的只是将文本复制到一个新文件中,并将其另存为test.txt。我不知道为什么这个工作。这可能是因为文件编码?该文件应该是UTF8编码的。 – Steven 2009-08-18 09:22:46