Экспорт данных в SQL Server как INSERT INTO - PullRequest
378 голосов
/ 04 октября 2009

Я использую SQL Server 2008 Management Studio и у меня есть таблица, которую я хочу перенести на другой сервер БД.

Есть ли возможность экспортировать данные в виде вставки в SQL-скрипт?

Ответы [ 10 ]

640 голосов
/ 04 октября 2009

В SSMS в обозревателе объектов щелкните правой кнопкой мыши базу данных, щелкните правой кнопкой мыши и выберите «Задачи», а затем «Создать сценарии».

Это позволит вам создавать сценарии для одной или всех таблиц, и одним из параметров является «Данные сценария». Если для этого параметра установлено значение TRUE, мастер сгенерирует сценарий с оператором INSERT INTO () для ваших данных.

Если используется 2008 R2 или 2012, это называется как-то еще, см. Скриншот ниже этого

alt text

2008 R2 или более поздняя версия, например, 2012

Выберите «Типы данных для сценария», которые могут быть «Только данные», «Схема и данные» или «Только схема» - по умолчанию).

enter image description here

И еще есть пакет " SSMS Addin " в Codeplex (включая исходный код), который обещает почти те же функциональные возможности и еще несколько (например, быстрый поиск и т. Д.)

alt text

107 голосов
/ 23 октября 2012

Ради явного безмозглости, следуя инструкциям marc_s здесь ...

В SSMS в обозревателе объектов щелкните правой кнопкой мыши базу данных щелкните правой кнопкой мыши и выберите «Задачи», а затем «Создать сценарии».

... Затем я вижу экран мастера с надписью « Введение, Выбор объектов, Настройка параметров сценариев, Сводка и Сохранение или публикация сценариев » с кнопками «Предыдущая», «Следующая», «Готово», «Отмена» внизу.

На шаге Настройка параметров сценариев необходимо нажать «Дополнительно» , чтобы открыть страницу с параметрами. Затем, как упомянул Ghlouw , теперь вы выбираете «Типы данных для сценария» и прибыль.

advanced button HIGHLIGHTED IN RED!1!!

45 голосов
/ 29 мая 2013

Если вы используете SQLServer 2008R2, вам нужно установить Типы данных в поле скрипта.

enter image description here

36 голосов
/ 02 августа 2011

Если вы используете SQL Server 2008 R2, встроенные опции для этого в SSMS, как описано выше, marc_s, немного изменились. Вместо выбора Script data = true, как показано на его диаграмме, теперь появилась новая опция, которая называется "Types of data to script", прямо над группировкой «Параметры таблицы / представления». Здесь вы можете выбрать только данные сценария, схему и данные или только схему. Работает как шарм.

5 голосов
/ 17 октября 2017

Для тех, кто ищет версию для командной строки, Microsoft выпустила mssql-scripter для этого:

$ pip install mssql-scripter

# Generate DDL scripts for all database objects and DML scripts (INSERT statements)
# for all tables in the Adventureworks database and save the script files in
# the current directory
$ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \
                 -f './' --file-per-object
2 голосов
/ 28 июня 2018

для SQl сервера Mng Studio 2016:

enter image description here

2 голосов
/ 06 июля 2015

Все вышеперечисленное приятно, но если вам нужно

  1. Экспорт данных из нескольких представлений и таблиц с объединениями
  2. Создание операторов вставки для разных РСУБД
  3. Перенос данных из любой РСУБД в любую РСУБД

тогда следующий трюк - единственный путь.

Сначала узнайте, как создавать файлы спула или экспортировать наборы результатов из клиента командной строки исходного db. Во-вторых, узнайте, как выполнять операторы sql в базе данных назначения.

Наконец, создайте операторы вставки (и любые другие операторы) для целевой базы данных, запустив сценарий sql в исходной базе данных. например,

SELECT '-- SET the correct schema' FROM dual;
SELECT 'USE test;' FROM dual;
SELECT '-- DROP TABLE IF EXISTS' FROM dual;
SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual;
SELECT '-- create the table' FROM dual;
SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual;

SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1;

Приведенный выше пример был создан для базы данных Oracle, где для двойных выборок без таблицы необходимо использование dual.

Набор результатов будет содержать сценарий для базы данных назначения.

2 голосов
/ 22 апреля 2012

Вы также можете ознакомиться с надстройкой Data Scripter для SQL Server Management Studio 2008 по адресу:

http://www.mssql -vehicle-data.com / SSMS


Список их возможностей:

  • Он был разработан в SSMS 2008 и не поддерживается версией 2005 в настоящее время (скоро!)

  • Быстрый экспорт данных в T-SQL для синтаксиса MSSQL и MySQL

  • CSV, TXT, XML также поддерживаются! Используйте весь потенциал, мощность и скорость, которые может предложить SQL.

  • Не ждите, пока Access или Excel выполнят для вас работу сценариев, на выполнение которой может потребоваться несколько минут - пусть SQL Server сделает это за вас и возьмет на себя все предположения по экспорту ваших данных!

  • Настройка вывода данных для быстрого резервного копирования, обработки DDL и многого другого ...

  • Быстрое и эффективное изменение имен таблиц и схем баз данных в соответствии с вашими потребностями

  • Экспорт имен столбцов или просто создание данных без имен.

  • Вы можете выбрать отдельные столбцы для сценария.

  • Вы можете выбрать подмножества данных (предложение WHERE).

  • Вы можете выбрать порядок данных (предложение ORDER BY).

  • Отличная утилита резервного копирования для тех шероховатых операций отладки базы данных, которые требуют манипулирования данными. Не теряйте данные во время экспериментов. Управляйте данными на лету!

1 голос
/ 09 сентября 2016

Вот пример создания сценария переноса данных с использованием курсора для итерации исходной таблицы.

SET NOCOUNT ON;  
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1

DECLARE cur CURSOR FOR 
    SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
    FROM CV_ORDER_STATUS
    ORDER BY [Stage]

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'

PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';

OPEN cur
FETCH NEXT FROM cur
    INTO @row

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @first = 1
        SET @first = 0
    ELSE
        SET @out = @out + ',' + CHAR(13);

    SET @out = @out + @row

    FETCH NEXT FROM cur into @row
END

CLOSE cur
DEALLOCATE cur

PRINT @out

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'
0 голосов
/ 22 марта 2018

После многих поисков это был мой лучший снимок:

Если у вас много данных и вам нужен компактный и элегантный скрипт, попробуйте: SSMS Tools Pack

Он генерирует объединение всех операторов выбора для вставки элементов в целевые таблицы и довольно хорошо обрабатывает транзакции.

Скриншот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...