Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Bulk Insert z parametrem FIRSTROW pomija następujący wiersz

Nie sądzę, że możesz pominąć wiersze w innym formacie za pomocą BULK INSERT /BCP .

Po uruchomieniu tego:

TRUNCATE TABLE so1029384

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

SELECT * FROM so1029384

otrzymuję:

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

Wygląda na to, że wymaga znaku „|” nawet w danych nagłówka, ponieważ czyta do tego w pierwszej kolumnie - połykając znak nowej linii w pierwszej kolumnie. Oczywiście, jeśli dodasz parametr terminatora pola, oczekuje on, że każdy wiersz MUSI mieć.

Możesz usunąć wiersz z krokiem wstępnego przetwarzania. Inną możliwością jest wybranie tylko kompletnych wierszy, a następnie ich przetworzenie (bez nagłówka). Lub użyj narzędzia, które sobie z tym poradzi, takiego jak SSIS.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL:CTE z kolumnami tożsamości

  2. Microsoft Access a SQL Server

  3. Niestandardowa klauzula SQL GROUP BY

  4. Jak wybrać [tabela temp1] =[podwybór 1], [tabela temp2] =[podwybór 2] Z [Procedura zapisana]

  5. Uzyskiwanie identyfikatora wiersza, który zaktualizowałem w SQL Server