sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Bulk Insert med FIRSTROW-parameter springer den følgende linje over

Jeg tror ikke, du kan springe rækker over i et andet format med BULK INSERT /BCP .

Når jeg kører dette:

TRUNCATE TABLE so1029384

BULK INSERT so1029384
FROM 'C:\Data\test\so1029384.txt'
WITH
(
--FIRSTROW = 2,
FIELDTERMINATOR= '|',
ROWTERMINATOR = '\n'
)

SELECT * FROM so1029384

Jeg får:

col1                                               col2                                               col3
-------------------------------------------------- -------------------------------------------------- --------------------------------------------------
***A NICE HEADER HERE***
0000001234               SSNV                                               00013893-03JUN09
0000005678                                         ABCD                                               00013893-03JUN09
0000009112                                         0000                                               00013893-03JUN09
0000009112                                         0000                                               00013893-03JUN09

Det ser ud til, at det kræver '|' selv i overskriftsdataene, fordi den læser op til det i den første kolonne - sluger en ny linje i den første kolonne. Selvfølgelig, hvis du inkluderer en feltterminatorparameter, forventer den, at hver række har en.

Du kan strippe rækken med et forbehandlingstrin. En anden mulighed er kun at vælge komplette rækker og derefter behandle dem (eksklusive overskriften). Eller brug et værktøj, der kan håndtere dette, såsom SSIS.



  1. Oracle ODP.net Managed vs Unmanaged Driver

  2. PHP PDO-hentning returnerer FALSE, når der ikke findes nogen poster OG ved fejl

  3. Brug af SQL til at bestemme ordtællingsstatistikker for et tekstfelt

  4. Mysql bruger ikke DATETIME-indekset, når tabellen har andre felter