2012-07-10 69 views
6

我将数据从CSV文件导入到临时表中,然后将它们与“真实”表合并。Bulk Insert不插入任何行

对于我的其他表,这工作正常。但是对于这个特定的文件和表格,似乎没有任何事情发生。

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; 

最后的select语句不会返回任何内容,也不会显示错误。

CSV文件包含数千行。示例行:

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 

我在这里可能会丢失什么?

+0

讨厌显而易见 - 但你的文件是否有任何内容,如果有的话,是否符合你的标准? – DaveRlz 2012-07-10 12:33:36

+1

您需要提供至少2行CSV未能加载的行。 – 2012-07-10 12:36:18

+0

该文件包含内容,我相信它符合条件。它不应该给我一个错误消息,否则? – 2012-07-10 13:45:04

回答

14

埃德哈珀带领我走向正确的方向:行终止者是错误的。

所以,当我在BULK INSERT将其改为

ROWTERMINATOR = '0x0a' 

(而不是 '\ n'),它开始工作。

+0

我的服务器最近从SQL Server 2005迁移到2012.但是,它与\ n一起工作,而今天它只能与0x0a一起使用。实际上这里发生了什么? – 2015-10-09 08:38:45