Tôi không nghĩ rằng bạn có thể bỏ qua các hàng ở định dạng khác với BULK INSERT
/ BCP
.
Khi tôi chạy cái này:
TRUNCATE TABLE so1029384
BULK INSERT so1029384
FROM 'C:\Data\test\so1029384.txt'
WITH
(
--FIRSTROW = 2,
FIELDTERMINATOR= '|',
ROWTERMINATOR = '\n'
)
SELECT * FROM so1029384
Tôi nhận được:
col1 col2 col3
-------------------------------------------------- -------------------------------------------------- --------------------------------------------------
***A NICE HEADER HERE***
0000001234 SSNV 00013893-03JUN09
0000005678 ABCD 00013893-03JUN09
0000009112 0000 00013893-03JUN09
0000009112 0000 00013893-03JUN09
Có vẻ như nó yêu cầu dấu '|' ngay cả trong dữ liệu tiêu đề, vì nó đọc đến cột đó vào cột đầu tiên - nuốt dòng mới vào cột đầu tiên. Rõ ràng là nếu bạn bao gồm một tham số kết thúc trường, nó sẽ hy vọng rằng mọi hàng PHẢI có một cái.
Bạn có thể tách hàng bằng một bước xử lý trước. Một khả năng khác là chỉ chọn các hàng hoàn chỉnh, sau đó xử lý chúng (không bao gồm tiêu đề). Hoặc sử dụng một công cụ có thể xử lý việc này, chẳng hạn như SSIS.