【问题标题】:How can I bulk load this file into SQL Server 2012?如何将此文件批量加载到 SQL Server 2012 中?
【发布时间】:2015-09-24 14:24:08
【问题描述】:

我正在尝试将一些数据从流行的 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 

【问题讨论】:

  • 您是否已经将 admin2Codes.txt 从 UTF-8 转换为 UTF-16 ?

标签: sql-server bulkinsert geonames


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多