如何将此文件批量加载到SQL Server 2012中?

时间:2015-09-24 14:24:08

标签: sql-server bulkinsert geonames

我正在尝试将流行的GeoNames网站中的一些数据导入SQL Server。它是制表符分隔的文本文件。我不认为会有问题,但无论我做什么,我只是收到一条错误信息:

  

批量加载失败。第1行第4列的数据文件中的列太长。验证是否正确指定了字段终止符和行终止符。

这是我要导入的文件: http://download.geonames.org/export/dump/admin2Codes.txt

......这是我的表:

CREATE TABLE [Admin2Codes](
    [code] [VARCHAR](20) NOT NULL,
    [name] [NVARCHAR](200) NOT NULL,
    [asciiname] [NVARCHAR](200) NOT NULL,
    [geonameId] [INT] NOT NULL
) 

我无法发现问题所在。如果我在文件中只有一行,它会工作,但只要有多行,它就会失败。文件中的行结尾似乎是\ n并且匹配我的SQL:

BULK INSERT dbo.Admin2Codes FROM 'D:\admin2codes.txt' 
WITH( 
   DATAFILETYPE = 'widechar', 
   FIELDTERMINATOR = '\t', 
   ROWTERMINATOR = '\n' 
) 
 GO 

1 个答案:

答案 0 :(得分:0)

看起来数据使用换行符作为UNIX中使用的行终止符,而不是Windows中使用的回车符和换行符。试试这个:

ROWTERMINATOR = '''+CHAR(10)+'''