Je ne pense pas que vous puissiez ignorer des lignes dans un format différent avec BULK INSERT
/BCP
.
Quand je lance ceci :
TRUNCATE TABLE so1029384
BULK INSERT so1029384
FROM 'C:\Data\test\so1029384.txt'
WITH
(
--FIRSTROW = 2,
FIELDTERMINATOR= '|',
ROWTERMINATOR = '\n'
)
SELECT * FROM so1029384
J'obtiens :
col1 col2 col3
-------------------------------------------------- -------------------------------------------------- --------------------------------------------------
***A NICE HEADER HERE***
0000001234 SSNV 00013893-03JUN09
0000005678 ABCD 00013893-03JUN09
0000009112 0000 00013893-03JUN09
0000009112 0000 00013893-03JUN09
Il semble qu'il nécessite le '|' même dans les données d'en-tête, car il lit jusqu'à cela dans la première colonne - engloutissant une nouvelle ligne dans la première colonne. Évidemment, si vous incluez un paramètre de terminaison de champ, il s'attend à ce que chaque ligne DOIT en avoir un.
Vous pouvez supprimer la ligne avec une étape de prétraitement. Une autre possibilité consiste à ne sélectionner que des lignes complètes, puis à les traiter (hors en-tête). Ou utilisez un outil qui peut gérer cela, comme SSIS.