sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Bulk Insert med FIRSTROW-parameter hoppar över följande rad

Jag tror inte att du kan hoppa över rader i ett annat format med BULK INSERT /BCP .

När jag kör detta:

TRUNCATE TABLE so1029384

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

SELECT * FROM so1029384

Jag 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 verkar som om det kräver '|' även i rubrikdata, eftersom den läser upp till det i den första kolumnen - sväljer en ny rad i den första kolumnen. Om du inkluderar en fältavslutningsparameter förväntar den sig självklart att varje rad MÅSTE har en.

Du kan ta bort raden med ett förbearbetningssteg. En annan möjlighet är att bara välja kompletta rader och sedan bearbeta dem (exklusive rubriken). Eller använd ett verktyg som kan hantera detta, som SSIS.



  1. Hur man skickar användardefinierad tabelltyp som lagrad procedurparameter i C#

  2. Försöker hitta fordon som är gratis mellan 2 olika datum

  3. Finns det ett alternativ till TOP i MySQL?

  4. AWS Python Lambda med Oracle - OID Generation misslyckades även efter att ha lagt till HOSTALIASES