2013-10-12 92 views
0

我正在使用批量插入將文本文件讀取到SQL Server表中。當我嘗試使用批量插入時,我仍然收到相同的錯誤,即使如果我將文本文件的第一行,並將值複製到一個普通的舊插入語句,一切正常。我的數據庫,stop_times,是設置如下:批量插入不工作讀取.txt文件到SQL Server中

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=',' 
) 

給我

消息4864 ,Level 16,State 1,Line 1
第1行(train_num)的批量加載數據轉換錯誤(類型不匹配或指定代碼頁的字符無效)。
消息4864,級別16,狀態1,行1
第2行第2列(arrival_time)的批量加載數據轉換錯誤(指定代碼頁的類型不匹配或無效字符)。
消息4864,級別16,狀態1,行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); 

作品。我覺得我錯過了大容量插入功能中完全明顯的一些東西,但是很無奈。

+0

看一看格式的文件http://msdn.microsoft.com/ en-us/library/ms179250.aspx –

回答

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 

) 
+0

**提示**並確保您正在嘗試導入的文件在您運行此查詢之前沒有在其他地方打開過 –

+0

我已確認該文件已關閉,並將其與該ROWTERMINATOR。我仍然得到這些錯誤(甚至嘗試了ROWTERMINATOR的'\ r \ n') –

+0

你有沒有試過只用'\ n'來做這件事,你能告訴我你試圖插入的列的數據類型是什麼這些記錄以及該.txt文件中大約有多少條記錄。 –