SQL INSERT INTO…SET

  SQL ГДЕ
Рейтинг:
  Псевдоним SQL
Рейтинг :
  SQL JOIN
Рейтинг:
  SQL UNION
Рейтинг:
  SQL ТОП
Рейтинг :
  ПРЕДЕЛ SQL
Рейтинг:
  SQL СЛУЧАЙ
Рейтинг :
  SQL LIKE
Рейтинг:
  SQL IN
Рейтинг:
  СЧЕТЧИК SQL
Рейтинг:
 
SQL MAX
Рейтинг:
  SQL МИН
Рейтинг:
  SQL SUM
Рейтинг:
  SQL AVG
Рейтинг:
  SQL TRIM
Рейтинг:
90 005
  SQL FIRST
Рейтинг:
  SQL ALTER
Рейтинг:
  SQL DROP
Оценка:
  SQL AS
Рейтинг:
  SQL ПОСЛЕДНИЕ
Рейтинг :
  SQL MID
Рейтинг:
  SQL LEN
Рейтинг:
 
SQL ROUND
Рейтинг:
  SQL СЕЙЧАС()
Рейтинг:
  SQL ИСПОЛЬЗОВАНИЕ
Рейтинг :
9 0005 90 005
  MYSQL ДЕНЬ(), МЕСЯЦ(), ГОД(), ЧАС(), МИНУТА(), ВЕКТОРА()
Рейтинг:
  MYSQL CURDATE(), CURRENT_DATE(), CURTIME(), CURRENT_TIME(), NOW(), SYSDATE()
Рейтинг:

SQL SERVER — как преобразовать набор результатов оператора Select в операторы Insert необходимо создать, в основном, когда им нужно перенести небольшой объем данных из одного экземпляра в другой или из одной среды в другую.

Недавно я создал одну из новых баз данных филиалов моего клиента из базы данных других филиалов и столкнулся с этим сценарием. К счастью, со времен SQL Server 2005 у нас есть решение, но оно было очень сложным, особенно когда вам нужно было сделать это для таблиц, так как они имеют множество столбцов.
Причина
Я пишу это решение в том, что вы можете сделать это за несколько кликов в SQL Server 2012 и выше.
Прежде чем приступить к решению, я хотел бы создать образец для демонстрации решения.

Образец:
Ниже приведен оператор выбора, в котором я изменил набор результатов для демонстрации.

ИСПОЛЬЗОВАНИЕ [AdventureWorks2012]
ИДТИ
ВЫБЕРИТЕ [ИД отдела]
,[Имя] + 'Отдел' Как [Имя]
,[Имя группы]
,Getdate() как [ModifiedDate]
ОТ [Отдела кадров].[Отдел]
ИДТИ
 

Ниже приведены два решения, одно из которых является традиционным, а другое можно использовать в SQL Server 2012 и более поздних версиях.

Решение 1. Использование конкатенации строк (традиционный метод)
В этом решении необходимо объединить результирующий набор оператора Select, чтобы преобразовать его в оператор Insert (с некоторыми изменениями данных). Вы должны убедиться, что одинарные кавычки (‘) находятся в правильных местах. Кроме того, если данные в результирующем наборе не относятся к строковому типу данных, для объединения их необходимо преобразовать в строковый тип данных. В случае, если в таблице есть столбец идентификаторов, вы должны передать имя столбца в операторе INSERT, а также с помощью SET IDENTITY_INSERT. Причина, по которой я НЕ  рекомендовать это решение, потому что если у вас больше столбцов в таблице, это также займет больше времени для разработки и отладки.

ИСПОЛЬЗОВАНИЕ [AdventureWorks2012]
ИДТИ
ВЫБИРАТЬ
'ВСТАВИТЬ В tbl_sample (
[DepartmentID],[Name],[GroupName],[ModifiedDate])
ЗНАЧЕНИЯ(' + ПРЕОБРАЗОВАТЬ(VARCHAR(50),[DepartmentID])
+ ',''' + [Имя] + 'Отдел'','
+ ''''+ [Имя группы] + ''','
+ ''''+ ПРЕОБРАЗОВАТЬ(VARCHAR(50),GETDATE(),120) + ''')'
ОТ [Отдела кадров]. [Отдел]
ИДТИ
 

Решение 2. Использование сценария создания (новый метод)
Этот метод применим к SQL Server 2012 и более поздним версиям и покажется вам довольно простым. Позвольте мне объяснить этот метод, используя два простых шага.

Шаг 1:
Прежде всего, вам нужно разработать оператор выбора, как это сделал я в образце, на основе ваших требований и ВСТАВИТЬ В ТАБЛИЦУ, как показано ниже.

ИСПОЛЬЗОВАНИЕ [AdventureWorks2012]
ИДТИ
ВЫБЕРИТЕ [ИД отдела]
,[Имя] + 'Отдел' Как [Имя]
,[Имя группы]
,Getdate() как [ModifiedDate]
INTO [tbl_Department_Sample] -- Результирующий набор вставлен в таблицу
ОТ [Отдела кадров].[Отдел]
ИДТИ
 

Шаг 2:
Набор результатов оператора select вставлен в таблицу ([tbl_Department_Sample]). Теперь вам просто нужно сгенерировать сценарий (только данные) таблицы ([tbl_Department_Sample]), используя функцию «Создать сценарий» в SQL Server 2012 и более поздних версиях.