sql >> Database >  >> RDS >> Sqlserver

Mogelijk om PrimaryKey ID's terug te krijgen na een SQL BulkCopy?

In dat scenario zou ik SqlBulkCopy . gebruiken om in te voegen in een staging tabel (d.w.z. een die eruitziet als de gegevens die ik wil importeren, maar geen deel uitmaakt van de belangrijkste transactietabellen), en vervolgens in de DB naar een INSERT /SELECT om de gegevens naar de eerste echte tabel te verplaatsen.

Nu heb ik twee keuzes, afhankelijk van de serverversie; Ik zou een tweede INSERT kunnen doen /SELECT naar de tweede echte tabel, of ik zou de INSERT . kunnen gebruiken /OUTPUT clausule om de tweede insert te doen, met behulp van de identiteitsrijen uit de tabel.

Bijvoorbeeld:

     -- 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. Oracle RAC op clouds van derden

  2. Hoe wijzigingen in meerdere kolommen in de databasetabel bij te houden voor controledoeleinden?

  3. Combinaties van tabellen en kolommen maken met SQL Query of Laravel SQL Query Builder

  4. PHP gebruikt CURRENT_TIMESTAMP uit oostelijke tijdzone