2012-07-10 19 views
6

Importación de datos de archivos CSV en tablas temporales antes de combinarlos con una tabla "real".La inserción masiva no inserta ninguna fila

Para mis otras mesas, esto funciona bien. Pero para este archivo y tabla en particular, nada parece suceder.

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; 

La última instrucción de selección no devuelve nada y no se muestran errores.

El archivo CSV contiene miles de líneas. Líneas de ejemplo:

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 

¿Qué podría faltar aquí?

+0

Odio preguntar lo obvio, pero ¿tiene su archivo algo en ella y, en caso afirmativo, ¿hay algo que coincida con sus criterios? – DaveRlz

+1

Tendrá que dar como mínimo 2 líneas de su CSV que no se carga. –

+0

El archivo tiene contenido, y creo que coincide con los criterios. ¿No debería darme un mensaje de error de lo contrario? –

Respuesta

14

Ed Harper me condujo en la dirección correcta: el terminador de fila estaba equivocado.

Así que cuando lo cambié a

ROWTERMINATOR = '0x0a' 

en BULK INSERT (en lugar de '\ n') que comenzó a trabajar.

+0

Mis servidores se migraron recientemente de SQL Server 2005 a 2012. Pero AYER Ayer funcionó con \ n y HOY solo funciona con 0x0a. ¿Qué está pasando aquí, en realidad? –

Cuestiones relacionadas