Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Възможно ли е да се върнат идентификаторите на PrimaryKey след SQL BulkCopy?

В този сценарий бих използвал SqlBulkCopy за вмъкване в инсцениция таблица (т.е. такава, която изглежда като данните, които искам да импортирам, но не е част от основните транзакционни таблици), и след това в DB към INSERT /SELECT за да преместите данните в първата реална таблица.

Сега имам два избора в зависимост от версията на сървъра; Мога да направя втори INSERT /SELECT към втората реална таблица, или мога да използвам INSERT /OUTPUT клауза, за да направите второто вмъкване, като използвате редовете за самоличност от таблицата.

Например:

     -- 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. Имате проблеми със съхраняването на UTF-8 в NVarChar в SQL Server 2008

  2. Как да получа информация за дата/час от колона TIMESTAMP?

  3. PIVOT в sql 2005

  4. SQL грешка с подреждане по в подзаявка

  5. INSERT IGNORE и ON DUPLICATE KEY UPDATE не работят в SQL Server 2008 R2