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


106

У мене є SQL Server 2008студія управління SQL Server.

Мені потрібно вибрати дані Table1в базі даних1. Тоді я повинен відредагувати деякі значення в результатах та insert values into Table1в базі даних2.

Або дозвольте сказати іншим способом.

Як перетворити дані в одній таблиці в insert script.


Чи є бази даних на одному сервері? Якщо так, ви можете вставити один в інший. Вставте у database2.dbo.myTable виберіть дані з database1.dbo.anOtherTable
u07ch

Так, обидві бази даних є на одному сервері. Але мені потрібен сценарій. Я дам ці сценарії нашому хлопцю з бази даних.
Капітан Комік

Це допомогло б з’ясувати питання. Будь-який підхід спрацює чи вам потрібен сценарій вставки, який ви можете передати своєму dba?
greg

Відповіді:


31

SSMS Toolpack (який є БЕЗКОШТОВНИМ, як у пиві) має безліч чудових функцій - включаючи генерування тверджень INSERT з таблиць.

Оновлення: для SQL Server Management Studio 2012 (і новіших версій) пакет SSMS Toolpack більше не є безкоштовним, але вимагає скромної плати за ліцензію.


+1 @marc_s Я багато працював над створенням таких скриптів для вставки, що відстежують сценарії T-SQL-генератора, і тепер ви мені кажете, що є інструмент.
bernd_k

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

13
Це вже не безкоштовно. ssmstoolspack.com/Licensing
Greg

@Greg: дякую, що вказали на це. Зауважте: ліцензування застосовується лише до SQL Server Management Studio 2012 та новіших версій - для попередніх версій пакет інструментів все ще безкоштовний.
marc_s

4
Альтернатива SSMS Toolpack ?
Кікенет

154

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

  • Зробіть a 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 >у списку параметрів, прокрутіть донизу та знайдіть "Типи даних до сценарію" та змініть їх на "Тільки дані"> OK

  • Виберіть "Зберегти у вікні нового запиту"> Далі> Далі> Готово

Всі 180 рядків тепер записані як 180 вставляють заяви!


12
Корисно для кількох рядів. Не корисно : Якщо таблиця містить 20000 рядків, і я хочу лише 20 вставок на 20 рядків.
Кікенет

2
@Kiquenet - Спочатку ви можете створити представлення, яке вибирає бажані 20 рядків, а потім виконайте ці кроки, щоб створити сценарії вставки на основі представлення. Потім ви можете зробити масове знаходження та заміну, щоб змінити ім'я View назад на те, на що потрібно вписати ім’я таблиці.
тембер

@tember Це не працює на View, як ви кажете, але це робить у Visual Studio: спочатку ви створюєте перегляд із необхідним вибором у sql-студії, потім відкриваєте Visual Studio, підключаєтесь до sql-сервера та генеруєте скрипт на створеному перегляді.
Сергій

Дякую за цю інформацію. Хоча скидання всієї таблиці є надмірним, але це вирішило мою проблему.
paulz

Рятувальник життя. Я пишу сценарії все життя.
Джей

38

Рідний метод :

наприклад, якщо у вас є таблиця

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

23

1- Пояснення сценаріїв

А) Синтаксис для вставки даних у таблицю наведений нижче

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) Потім, нарешті, я з’єднав вище змінну, щоб створити остаточний скрипт, який генерує сценарій вставки при виконанні

Е)

@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)

Г)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

14

Це можна зробити за допомогою Visual Studio Object Explorer SQL Server.

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


1
Ваша публікація є правильним і найпростішим способом за допомогою інструментів даних SQL Server у Visual Studio, тут і тут є повідомлення, в якому пояснюється, як допомагає генерувати оператор вставки для перших 1000 рядків надії.
shaijut

8

Використовуючи візуальну студію, виконайте наступне

Створіть проект типу SQL Server -> Проект баз даних SQL Server

відкрити провідник sql-сервера CTL- \, CTL-S

додайте SQL Server, клацнувши правою кнопкою миші на піктограму SQL SERVER. Selcet ДОДАТИ НОВОГО СЕРВЕРА

перейдіть до таблиці, яка вас цікавить

клацніть правою кнопкою миші -> ПЕРЕГЛЯД ДАНИХ

Клацніть верхню ліву клітинку, щоб виділити все (ctl-A, схоже, не працює)

Клацніть правою кнопкою миші -> Скрипт

Це казково. Я спробував все, що перераховано вище, протягом багатьох років. Я знаю, що там є інструмент, який зробить це та багато іншого, не можу придумати назву цього. Але це дуже дорого.

Удачі. Я щойно це зрозумів. Не випробовували її широко з текстовими полями тощо, але, схоже, це дає вам довгий шлях.

Грег


1
Це не конвертує вибрані результати, він просто скриптує таблицю.
Ерік К

@QuantumDynamix - оригінальне запитання з’ясовується внизу за допомогою "Як я можу перетворити дані в одній таблиці в сценарій". Нижче наведено зразок мого підходу. Це саме те, що запитав користувач. Насправді, це єдине рішення, яке я бачу, яке фактично створює сценарій вставок, як запитує користувач. Чому потік? Що означає "не конвертувати вибрані результати"? SET IDENTITY_INSERT [PMDB]. [BUAttr] НА ВСТАВЛЕННЯ В [PMDB]. [BUAttr] ([id], [BU], [Name], [Value]) ЦІННОСТІ (1, N'ALASKA ', N'GeoCenter Lat' , N'67.07213 ')
greg

це разом із створенням темп-таблиць зробив це для мене
hr-tis

4

Створіть окрему таблицю, використовуючи, наприклад, оператор

Виберіть * у 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

Я думаю, що це також можливо за допомогою adhoc запитів, ви можете експортувати результат у файл 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 робить це за вас. виберіть 'unload' для таблиці та дотримуйтесь параметрів через (скасувати DDL, якщо ви не хочете, щоб усі таблиці створювали речі).


1
Це чітко позначено як питання про SQL Server ...
BentOnCoding

Також можливо використовувати розробник Oracle sql з сервером sql. Я відредагував свою відповідь.
Ліам

0

Я знайшов цей додаток SMSMS Boost , який є безкоштовним і робить це саме серед іншого. Ви можете натиснути правою кнопкою миші результати та вибрати як сценарій даних як.


Я переглядаю дані сітки сценарію, але не
генерую

0

Ви можете використовувати цей Q2C.SSMSPlugin , який є безкоштовним та відкритим кодом. Ви можете натиснути правою кнопкою миші та вибрати "Виконати запит до команди ... -> Запит для вставки ...". Насолоджуйтесь)


Дійсно для SSMS 2012?
Кікенет

-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.
Нільс Лукас

Чи це не функціонально рівнозначно?
Захисник один
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.