当我尝试将文本文件导入到我的数据库时,我收到转换错误.以下是我收到的错误信息:
第1行第4列(年)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符).
CREATE TABLE Students ( StudentNo Integer NOT NULL Primary Key,FirstName VARCHAR(40) NOT NULL,LastName VARCHAR(40) NOT NULL,Year Integer,GPA Float NULL );
以下是文本文件中的示例数据:
100,Christoph,Van Gerwen,2011 101,Anar,Cooke,2011 102,Douglis,Rudinow,2008
我想我知道是什么问题.下面是我的批量插入代码:
use xta9354 bulk insert xta9354.dbo.Students from 'd:\userdata\xta9_Students.txt' with (fieldterminator = ',',rowterminator = '\n')
使用示例数据,在Year属性后面没有’,’,即使在年后还有另一个属性为Grade
有人可以告诉我如何解决这个问题?
解决方法
尝试使用
format file,因为您的数据文件只有4列.否则,尝试使用OPENROWSET或使用暂存表.
myTestFormatFiles.Fmt可能看起来像:
9.0 4 1 sqlINT 0 3 "," 1 StudentNo "" 2 sqlCHAR 0 100 "," 2 FirstName sql_Latin1_General_CP1_CI_AS 3 sqlCHAR 0 100 "," 3 LastName sql_Latin1_General_CP1_CI_AS 4 sqlINT 0 4 "\r\n" 4 Year "
http://i.msdn.microsoft.com/dynimg/IC45684.gif
This tutorial在使用BULK INSERT跳过列时也可能有所帮助.
你的声明将如下所示:
USE xta9354 GO BULK INSERT xta9354.dbo.Students FROM 'd:\userdata\xta9_Students.txt' WITH (FORMATFILE = 'C:\myTestFormatFiles.Fmt')