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

Czy można odzyskać identyfikatory PrimaryKey po wykonaniu SQL BulkCopy?

W tym scenariuszu użyłbym SqlBulkCopy wstawić do inscenizacji tabela (tj. taka, która wygląda jak dane, które chcę zaimportować, ale nie jest częścią głównych tabel transakcyjnych), a następnie w bazie danych do INSERT /SELECT aby przenieść dane do pierwszej rzeczywistej tabeli.

Teraz mam dwie możliwości w zależności od wersji serwera; Mógłbym zrobić drugi INSERT /SELECT do drugiej rzeczywistej tabeli, lub mógłbym użyć INSERT /OUTPUT klauzulę, aby wykonać drugie wstawienie , używając wierszy tożsamości z tabeli.

Na przykład:

     -- dummy schema
     CREATE TABLE TMP (data varchar(max))
     CREATE TABLE [Table1] (id int not null identity(1,1), data varchar(max))
     CREATE TABLE [Table2] (id int not null identity(1,1), id1 int not null, data varchar(max))

     -- imagine this is the SqlBulkCopy
     INSERT TMP VALUES('abc')
     INSERT TMP VALUES('def')
     INSERT TMP VALUES('ghi')

     -- now push into the real tables
     INSERT [Table1]
     OUTPUT INSERTED.id, INSERTED.data INTO [Table2](id1,data)
     SELECT data FROM TMP


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server wyszukaj kolumnę według nazwy

  2. Indeks nie jest stosowany w widoku indeksowanym

  3. unpivot z dynamicznymi kolumnami i nazwami kolumn

  4. Błąd podczas próby wybrania x wierszy z DB2 (V4R5M0) za pośrednictwem serwera połączonego z serwerem sql przy użyciu funkcji OPENQUERY

  5. Generowanie aktualizacji SQL w celu zmiany kolejności towaru?