Преобразование результатов Select в скрипт вставки - SQL Server [закрыто]


107

У меня есть SQL Server 2008SQL Server Management Studio.

Мне нужно выбрать данные из Table1database1. Затем мне нужно отредактировать некоторые значения в результатах и insert values into Table1в базе данных2.

Или позвольте мне выразиться по-другому.

Как преобразовать данные из одной таблицы в формат insert script.


Находятся ли базы данных на одном сервере? Если да, вы можете вставлять их из одного в другой. Вставить в database2.dbo.myTable выберите данные из database1.dbo.anOtherTable
u07ch

Да, обе базы данных находятся на одном сервере. Но мне нужен сценарий. Я передам этот сценарий нашему специалисту по базе данных.
Captain Comic

Помогло бы прояснить вопрос. Будет ли работать какой-либо подход или вам нужен сценарий вставки, который вы можете передать своей БД?
greg

Ответы:


31

SSMS Toolpack (который БЕСПЛАТНЫЙ, как в пиве) имеет множество замечательных функций, включая создание операторов INSERT из таблиц.

Обновление: для SQL Server Management Studio 2012 (и новее) SSMS Toolpack больше не является бесплатным, но требует умеренной лицензионной платы.


+1 @marc_s Я много работал над созданием таких сценариев вставки без использования сценариев генератора T-SQL, и теперь вы говорите мне, что есть инструмент.
bernd_k

Будьте осторожны, когда в таблицах хранятся денежные данные. Этот тип данных может хранить больше десятичных знаков, чем обычно отображается, или в сценариях, созданных SSMS Toolpack
bernd_k

13
Это уже не бесплатно. ssmstoolspack.com/Licensing
greg

@Greg: спасибо, что указали на это. Примечание: это лицензирование распространяется только на SQL Server Management Studio 2012 и новее - для более ранних версий набор инструментов по-прежнему бесплатный.
marc_s

4
Альтернатива SSMS Toolpack ?
Kiquenet

160

Вот еще один метод, который в некоторых ситуациях может быть проще, чем установка плагинов или внешних инструментов:

  • Сделайте .select [whatever you need]INTO temp.table_namefrom [... etc ...]
  • Щелкните правой кнопкой мыши базу данных в обозревателе объектов => Задачи => Создать сценарии.
  • Выберите temp.table_nameна экране «Выбрать объекты», нажмите «Далее».
  • На экране «Укажите, как следует сохранять скрипты»:
    • Нажмите «Дополнительно», найдите свойство «Типы данных для сценария», выберите «Только данные», закройте дополнительные свойства.
    • Выберите «Сохранить в новом окне запроса» (если у вас нет тысяч записей).
  • Нажмите «Далее», дождитесь завершения задания и посмотрите, как результирующие INSERTоператоры появятся в новом окне запроса.
  • Используйте «Найти и заменить», чтобы изменить все [temp.table_name]на [your_table_name].
  • drop table [temp.table_name].

Использование INTO temp.table1 вызывает следующую ошибку: указанное имя схемы «temp» либо не существует, либо у вас нет разрешения на его использование. Я использую SQL 2012.
Марк,

3
tempздесь относится к любой схеме, к которой у вас есть доступ. Вы можете либо создать его ( create schema temp), а затем удалить его, когда закончите, либо (лучше) просто использовать любую схему, с которой вы сейчас работаете.
KT.

1
Спасибо за это, я знал, что должен быть способ! Кстати, вы можете пропустить создание временной таблицы, если вам просто нужны все данные из таблицы, которую вы хотите создать скриптом.
FAB

Мне пришлось использовать это для импорта данных в базу данных Azure. Импортируйте его в базу данных, отличную от лазурной, затем извлеките как вставки SQL.
m12lrpv

2
Меня все еще удивляет, что SSMS не добавила эту возможность «просматривать вывод как сценарий вставки» в наборах результатов ... но вышеуказанный подход работает, хотя он создает отдельные команды вставки вместо правильной массовой вставки (скажем, 1000 элементов на вставку ) вроде должно. Это может занять
целую

60

В SSMS:

  • Щелкните правой кнопкой мыши базу данных> Задачи> Создать сценарии

  • следующий

  • Выберите «Выбрать определенные объекты базы данных» и отметьте таблицу, для которой требуется создать сценарий, Далее

  • Щелкните Advanced >список параметров, прокрутите вниз и найдите «Типы данных для сценария» и измените его на «Только данные»> ОК.

  • Выберите «Сохранить в новом окне запроса»> Далее> Далее> Готово.

Все 180 строк теперь записаны как 180 операторов вставки!


12
Полезно для нескольких рядов. Бесполезно : если в таблице 20000 строк, а мне нужно только 20 вставок для 20 строк.
Kiquenet

2
@Kiquenet - сначала вы можете создать представление, которое выбирает желаемые 20 строк, а затем выполнить следующие действия, чтобы создать сценарии вставки на основе представления. Затем вы можете выполнить массовый поиск и замену, чтобы изменить имя представления обратно на любое имя таблицы, в которое вам нужно вставить.
тябрь

@tember Он не работает в представлении, как вы говорите, но он ДЕЙСТВУЕТ в Visual Studio: сначала вы создаете представление с требуемым выбором в sql studio, затем открываете Visual Studio, подключаетесь к серверу sql и генерируете сценарий для этого созданного представления.
Сергей

Спасибо за эту информацию. Хотя сброс всей таблицы - излишний, но это решило мою проблему.
paulz

Спасатель жизни. Я всю жизнь пишу сценарии.
Джей

39

Собственный метод :

например, если у вас есть таблица

Users(Id, name)

Ты можешь сделать это:

select 'insert into Table values(Id=' + Id + ', name=' + name + ')' from Users

Вы можете сделать это таким образом, но если у вас больше, чем несколько таблиц, придется немного печатать. В Google есть написанные и доступные для поиска sps, которые делают это за вас, или, если у вас есть VS2012, VS может сделать это за вас. Смотрите мой ответ ниже.
greg

1
Полезно для таблиц с небольшим количеством полей. Если в таблице 50, 60, 100 столбцов, бесполезно. SQL-код
Kiquenet

24

1- Объяснение скриптов

A) Синтаксис для вставки данных в таблицу приведен ниже.

Insert into table(col1,col2,col3,col4,col5)    

             -- To achieve this part i    
             --have used below variable
                ------@CSV_COLUMN-------

values(Col1 data in quote, Col2..quote,..Col5..quote)

-- To achieve this part 
-- i.e column data in 
--quote i have used 
--below variable
----@QUOTED_DATA---

C) Чтобы получить указанные выше данные из существующей таблицы, мы должны написать запрос выбора таким образом, чтобы результат был в форме, как указано выше.

D) Затем, наконец, я объединил указанную выше переменную для создания окончательного скрипта, который будет генерировать скрипт вставки при выполнении

E)

@TEXT='SELECT ''INSERT INTO
 '+@TABLE_NAME+'('+@CSV_COLUMN+')VALUES('''+'+'+SUBSTRING(@QUOTED_DATA,1,LEN(@QUOTED_DATA)-5)+'+'+''')'''+' Insert_Scripts FROM '+@TABLE_NAME + @FILTER_CONDITION

F) И, наконец, выполнил вышеуказанный запрос EXECUTE(TEXT)

G) QUOTENAME()функция используется для обертывания данных столбца внутри цитаты

H) ISNULLиспользуется, потому что если в какой-либо строке есть NULL данные для любого столбца, запрос не выполняется и возвращает, NULLпоэтому, чтобы избежать этого, я использовалISNULL

I) И создал СП sp_generate_insertscripts для того же

1- Просто введите имя таблицы, для которой вы хотите insert script

2- Условие фильтрации, если вы хотите получить конкретные результаты

----------Final Procedure To generate Script------

CREATE PROCEDURE sp_generate_insertscripts
(
    @TABLE_NAME VARCHAR(MAX),
    @FILTER_CONDITION VARCHAR(MAX)=''
)
AS
BEGIN

SET NOCOUNT ON

DECLARE @CSV_COLUMN VARCHAR(MAX),
        @QUOTED_DATA VARCHAR(MAX),
        @TEXT VARCHAR(MAX)

SELECT @CSV_COLUMN=STUFF
(
    (
     SELECT ',['+ NAME +']' FROM sys.all_columns 
     WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND 
     is_identity!=1 FOR XML PATH('')
    ),1,1,''
)

SELECT @QUOTED_DATA=STUFF
(
    (
     SELECT ' ISNULL(QUOTENAME('+NAME+','+QUOTENAME('''','''''')+'),'+'''NULL'''+')+'','''+'+' FROM sys.all_columns 
     WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND 
     is_identity!=1 FOR XML PATH('')
    ),1,1,''
)

SELECT @TEXT='SELECT ''INSERT INTO '+@TABLE_NAME+'('+@CSV_COLUMN+')VALUES('''+'+'+SUBSTRING(@QUOTED_DATA,1,LEN(@QUOTED_DATA)-5)+'+'+''')'''+' Insert_Scripts FROM '+@TABLE_NAME + @FILTER_CONDITION

--SELECT @CSV_COLUMN AS CSV_COLUMN,@QUOTED_DATA AS QUOTED_DATA,@TEXT TEXT

EXECUTE (@TEXT)

SET NOCOUNT OFF

END

Вы проделали потрясающую работу ...
DineshDB 08

14

Это можно сделать через Visual Studio SQL Server Object Explorer.

Вы можете нажать «Просмотреть данные» из контекстного меню для нужной таблицы, отфильтровать результаты и сохранить результат как сценарий.


1
Ваш пост - это правильный и самый простой способ использования инструментов данных SQL Server в Visual Studio, здесь и здесь есть сообщение, в котором объясняется, как сгенерировать инструкцию вставки для первых 1000 строк, которые надеются.
Shaijut

8

Используя Visual Studio, сделайте следующее

Создайте проект типа SQL Server -> SQL Server Database Project

откройте проводник sql server CTL- \, CTL-S

добавьте SQL Server, щелкнув правой кнопкой мыши значок SQL SERVER. Selcet ДОБАВИТЬ НОВЫЙ СЕРВЕР

перейдите к интересующей вас таблице

щелкните правой кнопкой мыши -> ПРОСМОТР ДАННЫХ

Щелкните верхнюю левую ячейку, чтобы выделить все (ctl-A, похоже, не работает)

Щелкните правой кнопкой мыши -> Сценарий

Это потрясающе. Я перепробовал все перечисленное выше за многие годы. Я знаю, что есть инструмент, который сделает это и многое другое, не могу вспомнить его название. Но это очень дорого.

Удачи. Я только что понял это. Не тестировал его широко с текстовыми полями и т. Д., Но похоже, что он поможет вам в будущем.

Грег


1
Это не преобразует выбранные результаты, а просто создает сценарий для таблицы.
Эрик К.

@QuantumDynamix - исходный вопрос поясняется внизу «Как я могу преобразовать данные из одной таблицы в сценарий». Ниже приведен пример моего подхода. Это именно то, что спросил пользователь. Фактически, это единственное решение, которое, как я вижу, действительно создает сценарий вставок, как просит пользователь. Почему голос против? Что означает "не конвертировать выбранные результаты"? SET IDENTITY_INSERT [PMDB]. [BUAttr] ON INSERT INTO [PMDB]. [BUAttr] ([id], [BU], [Name], [Value]) VALUES (1, N'ALASKA ', N'GeoCenter Lat' » , N'67.07213 ')
greg

это вместе с созданием временных таблиц сделало это для меня
harishr

4

Создайте отдельную таблицу с помощью оператора into Например

Выберите * в Test_123 из [dbo]. [Сотрудник] где Имя, например "% Test%"

Перейдите в базу данных. Щелкните правой кнопкой мыши базу данных. Щелкните "Создать сценарий". Выберите свою таблицу. Выберите расширенную опцию и выберите атрибут "Только данные". Выберите файл "Открыть в новом запросе".

Sql сгенерирует для вас скрипт


3

Вы можете выбрать опцию «Результат в файл» в SSMS и экспортировать выбранный результат в файл и внести изменения в файл результатов и, наконец, с помощью BCP - Массовая копия, которую вы можете вставить в таблицу 1 в базе данных 2.

Я думаю, что для массовой вставки вам нужно преобразовать файл .rpt в файл .csv

Надеюсь, это поможет.


2

У меня была аналогичная проблема, но мне нужно было создать оператор INSERT из запроса (с фильтрами и т. Д.)

Итак, я создал следующую процедуру:

CREATE PROCEDURE dbo.ConvertQueryToInsert (@input NVARCHAR(max), @target NVARCHAR(max)) AS BEGIN

    DECLARE @fields NVARCHAR(max);
    DECLARE @select NVARCHAR(max);

    -- Get the defintion from sys.columns and assemble a string with the fields/transformations for the dynamic query
    SELECT
        @fields = COALESCE(@fields + ', ', '') + '[' + name +']', 
        @select = COALESCE(@select + ', ', '') + ''''''' + ISNULL(CAST([' + name + '] AS NVARCHAR(max)), ''NULL'')+'''''''
    FROM tempdb.sys.columns 
    WHERE [object_id] = OBJECT_ID(N'tempdb..'+@input);

    -- Run the a dynamic query with the fields from @select into a new temp table
    CREATE TABLE #ConvertQueryToInsertTemp (strings nvarchar(max))
    DECLARE @stmt NVARCHAR(max) = 'INSERT INTO #ConvertQueryToInsertTemp SELECT '''+ @select + ''' AS [strings] FROM '+@input
    exec sp_executesql @stmt

    -- Output the final insert statement 
    SELECT 'INSERT INTO ' + @target + ' (' + @fields + ') VALUES (' + REPLACE(strings, '''NULL''', 'NULL') +')' FROM #ConvertQueryToInsertTemp

    -- Clean up temp tables
    DROP TABLE #ConvertQueryToInsertTemp
    SET @stmt = 'DROP TABLE ' + @input
    exec sp_executesql @stmt
END

Затем вы можете использовать его, записав вывод вашего запроса во временную таблицу и запустив процедуру:

-- Example table
CREATE TABLE Dummy (Id INT, Comment NVARCHAR(50), TimeStamp DATETIME)
INSERT INTO Dummy VALUES (1 , 'Foo', GetDate()), (2, 'Bar', GetDate()), (3, 'Foo Bar', GetDate())

-- Run query and procedure
SELECT * INTO #TempTableForConvert FROM Dummy WHERE Id < 3
EXEC dbo.ConvertQueryToInsert '#TempTableForConvert', 'dbo.Dummy'

Примечание. Эта процедура приводит только значения к строке, из-за чего данные могут выглядеть немного иначе. Например, с DATETIME секунды будут потеряны.


2

Это более универсальное решение (которое может сделать немного больше, чем требует вопрос), и его можно использовать в окне запроса без необходимости создавать новую хранимую процедуру - полезно в производственных базах данных, например, когда у вас нет доступа на запись .

Чтобы использовать код, измените его в соответствии с комментариями в строке, объясняющими его использование. Затем вы можете просто запустить этот запрос в окне запроса, и он напечатает требуемые операторы INSERT.

SET NOCOUNT ON

-- Set the ID you wish to filter on here
DECLARE @id AS INT = 123

DECLARE @tables TABLE (Name NVARCHAR(128), IdField NVARCHAR(128), IdInsert BIT, Excluded NVARCHAR(128))

-- Add any tables you wish to generate INSERT statements for here. The fields are as thus:
 -- Name: Your table name
 -- IdField: The field on which to filter the dataset
 -- IdInsert: If the primary key field is to be included in the INSERT statement
 -- Excluded: Any fields you do not wish to include in the INSERT statement
INSERT INTO @tables (Name, IdField, IdInsert, Excluded) VALUES ('MyTable1', 'Id', 0, 'Created,Modified')
INSERT INTO @tables (Name, IdField, IdInsert, Excluded) VALUES ('MyTable2', 'Id', 1, 'Created,Modified')

DECLARE @numberTypes TABLE (sysId TINYINT)

-- This will ensure INT and BIT types are not surrounded with quotes in the
-- resultant INSERT statement, but you may need to add more (from sys.types)
INSERT @numberTypes(SysId) VALUES(56),(104)

DECLARE @rows INT = (SELECT COUNT(*) FROM @tables)
DECLARE @cnt INT = 1

DECLARE @results TABLE (Sql NVARCHAR(4000))

WHILE @cnt <= @rows
BEGIN
    DECLARE @tablename AS NVARCHAR(128)
    DECLARE @idField AS NVARCHAR(128)
    DECLARE @idInsert AS BIT
    DECLARE @excluded AS NVARCHAR(128)
    SELECT
        @tablename = Name,
        @idField = IdField,
        @idInsert = IdInsert,
        @excluded = Excluded
    FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RowId FROM @tables) t WHERE t.RowId = @cnt

    DECLARE @excludedFields TABLE (FieldName NVARCHAR(128))
    DECLARE @xml AS XML = CAST(('<X>' + REPLACE(@excluded, ',', '</X><X>') + '</X>') AS XML)
    INSERT INTO @excludedFields SELECT N.value('.', 'NVARCHAR(128)') FROM @xml.nodes('X') AS T(N)

    DECLARE @setIdentity NVARCHAR(128) = 'SET IDENTITY_INSERT ' + @tablename

    DECLARE @execsql AS NVARCHAR(4000) = 'SELECT ''' + CASE WHEN @idInsert = 1 THEN @setIdentity + ' ON' + CHAR(13) ELSE '' END + 'INSERT INTO ' + @tablename + ' ('
    SELECT @execsql = @execsql +
    STUFF
    (
        (
            SELECT CASE WHEN NOT EXISTS(SELECT * FROM @excludedFields WHERE FieldName = name) THEN ', ' + name ELSE '' END
            FROM sys.columns
            WHERE object_id = OBJECT_ID('dbo.' + @tablename)
            FOR XML PATH('')
        ), 1, 2, ''
    ) +
    ')' + CHAR(13) + 'VALUES (' +
    STUFF
    (
        (
            SELECT
                CASE WHEN NOT EXISTS(SELECT * FROM @excludedFields WHERE FieldName = name) THEN
                    ''', '' + ISNULL(' +
                    CASE WHEN EXISTS(SELECT * FROM @numberTypes WHERE SysId = system_type_id) THEN '' ELSE ''''''''' + ' END +
                    'CAST(' + name + ' AS VARCHAR)' +
                    CASE WHEN EXISTS(SELECT * FROM @numberTypes WHERE SysId = system_type_id) THEN '' ELSE ' + ''''''''' END +
                    ', ''NULL'') + '
                ELSE ''
                END
            FROM sys.columns
            WHERE object_id = OBJECT_ID('dbo.' + @tablename)
            FOR XML PATH('')
        ), 1, 3, ''
    ) +
    ''')' + CASE WHEN @idInsert = 1 THEN CHAR(13) + @setIdentity + ' OFF' ELSE '' END +
    ''' FROM ' + @tablename + ' WHERE ' + @idField + ' = ' + CAST(@id AS VARCHAR)

    INSERT @results EXEC (@execsql)
    DELETE @excludedFields
    SET @cnt = @cnt + 1
END

DECLARE cur CURSOR FOR SELECT Sql FROM @results
OPEN cur

DECLARE @sql NVARCHAR(4000)
FETCH NEXT FROM cur INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @sql
    FETCH NEXT FROM cur INTO @sql
END

CLOSE cur
DEALLOCATE cur


1

Я думаю, что это также возможно с помощью специальных запросов, вы можете экспортировать результат в файл Excel, а затем импортировать этот файл в свой объект данных или использовать его как есть, а затем импортировать файл Excel во вторую базу данных, посмотрите эту ссылку, это может помочь вам много.

http://vscontrols.blogspot.com/2010/09/import-and-export-excel-to-sql-server.html


1

Я создал следующее procedure:

if object_id('tool.create_insert', 'P') is null
begin
  exec('create procedure tool.create_insert as');
end;
go

alter procedure tool.create_insert(@schema    varchar(200) = 'dbo',
                                   @table     varchar(200),
                                   @where     varchar(max) = null,
                                   @top       int = null,
                                   @insert    varchar(max) output)
as
begin
  declare @insert_fields varchar(max),
          @select        varchar(max),
          @error         varchar(500),
          @query         varchar(max);

  declare @values table(description varchar(max));

  set nocount on;

  -- Get columns
  select @insert_fields = isnull(@insert_fields + ', ', '') + c.name,
         @select = case type_name(c.system_type_id)
                      when 'varchar' then isnull(@select + ' + '', '' + ', '') + ' isnull('''''''' + cast(' + c.name + ' as varchar) + '''''''', ''null'')'
                      when 'datetime' then isnull(@select + ' + '', '' + ', '') + ' isnull('''''''' + convert(varchar, ' + c.name + ', 121) + '''''''', ''null'')'
                      else isnull(@select + ' + '', '' + ', '') + 'isnull(cast(' + c.name + ' as varchar), ''null'')'
                    end
    from sys.columns c with(nolock)
         inner join sys.tables t with(nolock) on t.object_id = c.object_id
         inner join sys.schemas s with(nolock) on s.schema_id = t.schema_id
   where s.name = @schema
     and t.name = @table;

  -- If there's no columns...
  if @insert_fields is null or @select is null
  begin
    set @error = 'There''s no ' + @schema + '.' + @table + ' inside the target database.';
    raiserror(@error, 16, 1);
    return;
  end;

  set @insert_fields = 'insert into ' + @schema + '.' + @table + '(' + @insert_fields + ')';

  if isnull(@where, '') <> '' and charindex('where', ltrim(rtrim(@where))) < 1
  begin
    set @where = 'where ' + @where;
  end
  else
  begin
    set @where = '';
  end;

  set @query = 'select ' + isnull('top(' + cast(@top as varchar) + ')', '') + @select + ' from ' + @schema + '.' + @table + ' with (nolock) ' + @where;

  insert into @values(description)
  exec(@query);

  set @insert = isnull(@insert + char(10), '') + '--' + upper(@schema + '.' + @table);

  select @insert = @insert + char(10) + @insert_fields + char(10) + 'values(' + v.description + ');' + char(10) + 'go' + char(10)
    from @values v
   where isnull(v.description, '') <> '';
end;
go

Тогда вы можете использовать это так:

declare @insert varchar(max),
        @part   varchar(max),
        @start  int,
        @end    int;

set @start = 1;

exec tool.create_insert @schema = 'dbo',
                        @table = 'customer',
                        @where  = 'id = 1',
                        @insert = @insert output;

-- Print one line to avoid the maximum 8000 characters problem
while len(@insert) > 0
begin
  set @end = charindex(char(10), @insert);

  if @end = 0
  begin
    set @end = len(@insert) + 1;
  end;

  print substring(@insert, @start, @end - 1);
  set @insert = substring(@insert, @end + 1, len(@insert) - @end + 1);
end;

Результат будет примерно таким:

--DBO.CUSTOMER
insert into dbo.customer(id, name, type)
values(1, 'CUSTOMER NAME', 'F');
go

Если вы просто хотите получить диапазон строк, используйте @topпараметр, как показано ниже:

declare @insert varchar(max),
        @part   varchar(max),
        @start  int,
        @end    int;

set @start = 1;

exec tool.create_insert @schema = 'dbo',
                        @table = 'customer',
                        @top    = 100,
                        @insert = @insert output;

-- Print one line to avoid the maximum 8000 characters problem
while len(@insert) > 0
begin
  set @end = charindex(char(10), @insert);

  if @end = 0
  begin
    set @end = len(@insert) + 1;
  end;

  print substring(@insert, @start, @end - 1);
  set @insert = substring(@insert, @end + 1, len(@insert) - @end + 1);
end;

Это помогает, но оно усекло это поле «6C2A94737A456C405FDCF793DFA6E661: BqRc / DpUIe27» до «6C2A94737A456C405FDCF793DFA6E6»
Адам Мендоза

0

Если вы используете Oracle (или настраиваете приложение для SQL Server), Oracle SQL Developer сделает это за вас. выберите «выгрузить» для таблицы и проследите за параметрами (снимите отметку DDL, если вы не хотите, чтобы вся таблица создавала материал).


1
Это явно помечено как вопрос SQL Server ...
BentOnCoding

Также можно использовать Oracle sql Developer с sql server. Я отредактировал свой ответ.
Лиам

0

Я нашел это дополнение SMSMS Boost , которое, помимо прочего, является бесплатным и делает именно это. Вы можете щелкнуть правой кнопкой мыши по результатам и выбрать Script data as.


Я просматриваю данные сетки
скрипта,

0

Вы можете использовать этот Q2C.SSMSPlugin , который является бесплатным и с открытым исходным кодом. Вы можете щелкнуть правой кнопкой мыши и выбрать «Выполнить запрос для команды ... -> Запрос для вставки ...». Наслаждаться)


Действительно для SSMS 2012?
Kiquenet

-1

Вы можете использовать INSERT INTO SELECTоператор, чтобы вставить результаты запроса на выборку в таблицу. http://www.w3schools.com/sql/sql_insert_into_select.asp

Пример:

INSERT INTO Customers (CustomerName, Country) SELECT SupplierName, Country FROM Suppliers WHERE Country='Germany';

1
Это не имеет ничего общего с результатом преобразования оператора SELECT в операторы INSERT. Это просто оператор INSERT.
Нильс Лукас

Разве он не эквивалентен функционально?
Protector one
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.