Преобразование результатов 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.