2012-07-10 45 views
6

Tôi đang nhập dữ liệu từ tệp CSV vào bảng tạm thời trước khi hợp nhất chúng với bảng "thực".Chèn số lượng lớn không chèn bất kỳ hàng nào

Đối với các bảng khác, tính năng này hoạt động tốt. Nhưng đối với một tập tin và bảng cụ thể này, dường như không có gì xảy ra.

CREATE TABLE #ManifestHeader ( 
[ROTATIONNUMBER] [nvarchar](12) NOT NULL, 
[ROTATIONVERSIONNO] [nvarchar](2) NOT NULL, 
[IMONUM] [nvarchar](50) NULL, 
[VESSELNAME] [nvarchar](35) NOT NULL, 
[VOYAGENO] [nvarchar](17) NOT NULL, 
[CARRIERCODE] [nvarchar](10) NULL, 
[CARRIERNAME] [nvarchar](35) NULL, 
[ETA] [datetime] NULL, 
[ETD] [datetime] NULL, 
[ACTUALARRIVALDATE] [datetime] NULL, 
[LASTPORTOFCALL] [nvarchar](5) NULL, 
[PORTARRIVAL] [nvarchar](5) NULL, 
[PORTNEXT] [nvarchar](5) NULL, 
[PORTFINAL] [nvarchar](5) NULL,  
[BERTHINGDATE] [datetime] NULL, 
[CDRSTARTDATE] [datetime] NULL, 
[CDRENDDATE] [datetime] NULL, 
[CDRSUBMISSIONDATE] [datetime] NULL, 
[NUMOFBOLS] [int] NULL, 
) 

BULK INSERT #ManifestHeader 
FROM 'D:\csvfiles\ManifestHeader.csv' 
WITH (FIELDTERMINATOR = '<,>', ROWTERMINATOR = '\n', FIRSTROW = 2, KEEPIDENTITY); 

SELECT * FROM #ManifestHeader; 

Câu lệnh chọn cuối cùng sẽ trả về không có gì và không có lỗi nào được hiển thị.

Tệp CSV chứa hàng nghìn dòng. Ví dụ:

ROTATIONNUMBER<,>ROTATIONVERSIONNO<,>IMONUM<,>VESSELNAME<,>VOYAGENO<,>CARRIERCODE<,>CARRIERNAME<,>ETA<,>ETD<,>ACTUALARRIVALDATE<,>LASTPORTOFCALL<,>PORTARRIVAL<,>PORTNEXT<,>PORTFINAL<,>BERTHINGDATE<,>CDRSTARTDATE<,>CDRENDDATE<,>CDRSUBMISSIONDATE<,>NUMOFBOLS 
12345678911<,>1<,>VB3BV<,>BLACKSTONE<,>020<,>MUNICA<,>MUNICA<,>2012-05-08 10:32:00<,>2012-05-08 11:32:00<,>2012-05-09 07:15:00<,>SGSIN<,>MZZPZ<,>MZZBW<,>MZZBW<,><,>2012-05-09 07:22:00<,><,>2012-05-09 07:22:26<,>1 
12345678912<,>1<,>VB4BV<,>REDSTONE<,>021<,>MUNICA<,>MUNICA<,>2011-11-29 11:48:00<,>2011-11-30 11:48:00<,><,>ZADER<,>MZZPZ<,>ZARCB<,>MZZPZ<,><,><,><,><,> 
12345678913<,>1<,>VB5BV<,>BLUESTONE<,>022<,>MUNICA<,>MUNICA<,>2012-05-09 08:00:00<,>2012-05-10 10:39:00<,>2012-05-09 11:11:00<,>ZADER<,>MZZPZ<,>ZARCB<,>ITCVV<,><,>2012-05-09 15:00:00<,><,>2012-05-07 11:14:42<,>1 
12345678914<,>1<,>VB6BV<,>GREENSTONE<,>023<,>MUNICA<,>MUNICA<,>2012-05-29 07:00:00<,>2012-05-29 23:00:00<,>2012-05-29 09:12:00<,>LKCMB<,>MZMNC<,>MZMNC<,>SGSIN<,><,>2012-05-29 23:00:00<,>2012-05-30 12:00:00<,>2012-05-29 09:30:33<,>1 

Tôi có thể thiếu gì ở đây?

+0

Ghét để hỏi rõ ràng - nhưng tệp của bạn có bất kỳ thứ gì trong đó và liệu có điều gì phù hợp với tiêu chí của bạn không? – DaveRlz

+1

Bạn sẽ cần phải cung cấp ít nhất 2 dòng CSV không tải được. –

+0

Tệp có nội dung và tôi cho rằng tệp đó phù hợp với tiêu chí. Nó có nên cho tôi một thông báo lỗi không? –

Trả lời

14

Ed Harper dẫn tôi đi đúng hướng: người kết thúc hàng sai.

Vì vậy, khi tôi đã thay đổi nó để

ROWTERMINATOR = '0x0a' 

trong BULK INSERT (thay vì '\ n') nó bắt đầu làm việc.

+0

Máy chủ của tôi gần đây đã được di chuyển từ SQL Server 2005 đến 2012. Nhưng YESTERDAY nó hoạt động với \ n và TODAY nó chỉ hoạt động với 0x0a. Điều gì đang xảy ra ở đây, thực sự? –

Các vấn đề liên quan