批量插入不能将.text文件读入SQL Server

时间:2013-10-12 18:48:08

标签: sql-server tsql sql-server-2012

我正在使用批量插入将文本文件读入SQL Server表。当我尝试使用批量插入时,我不断收到相同的错误,即使我接受文本文件的第一行,并将值复制到普通的旧插入语句中,一切正常。我的数据库stop_times设置如下:

train_num int,
arrival_time time,
dept_time time,
station_name varchar(50),
seq_num, int

我的.txt文件格式如下

 101,'04:30:00','04:30:00','San Jose',1
 101,'04:35:00','04:35:00','Santa Clara',2
 101,'04:40:00','04:40:00','Lawrence',3

运行

 bulk insert dbo.stop_times
 from 'C:\Users\amanda\Desktop\stop_times1.txt'
 with(
     FIELDTERMINATOR=','
 )

给我

  

Msg 4864,Level 16,State 1,Line 1
  第1行第1列(train_num)的批量加载数据转换错误(类型不匹配或指定代码页的无效字符)。
  Msg 4864,Level 16,State 1,Line 1
  第2行第2列(arrival_time)的批量加载数据转换错误(类型不匹配或指定代码页的无效字符)。
  Msg 4864,Level 16,State 1,Line 1
  第3行第2行(arrival_time)的批量加载数据转换错误(类型不匹配或指定代码页的无效字符)。

但是,将第一行复制并粘贴到

insert into stop_times(train_num, arrival_time, dept_time, station_name, seq_num)
values (101, '04:30:00', '04:30:00', 'San Jose', 1); 

的工作原理。我觉得我在批量插入功能中缺少一些完全明显的东西,但是我一无所知。

1 个答案:

答案 0 :(得分:0)

试试这个

 bulk insert dbo.stop_times
 from 'C:\Users\amanda\Desktop\stop_times1.txt'
 with(
     FIELDTERMINATOR=',',
     ROWTERMINATOR = '\n'
 )

如果你在第一行有列名,你需要做这样的事情

 bulk insert dbo.stop_times
 from 'C:\Users\amanda\Desktop\stop_times1.txt'
 with(
     FIELDTERMINATOR=',',
     ROWTERMINATOR = '\n',
     FIRSTROW = 2

 )