Экспорт данных в SQL Server как INSERT INTO

413

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

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

Джек Када
источник

Ответы:

682

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

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

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

альтернативный текст

2008 R2 или позже, например, 2012

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

введите описание изображения здесь

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

альтернативный текст

marc_s
источник
Я только что установил надстройку из Codeplex. Ницца. Спасибо за информацию.
Роб Гаррисон
1
Надстройка SMSS работала для меня в 2008 году. Надстройка Data Scripter не работала.
Фил Хейл
5
В 2008 R2 параметр «Типы данных для сценария» можно найти на экране «Настройка параметров сценариев». Нажмите кнопку «Дополнительно» там.
Райми
3
Работают ли эти надстройки в 2008 R2? Надстройка SSMS вызывает исключение при загрузке.
jocull
2
Посмотрите ответ @ruffin ниже для большего количества скриншотов
Кит Сирмонс
117

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

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

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

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

расширенная кнопка выделена красным! 1 !!

Ruffin
источник
13
Спасибо, эта кнопка имеет не очень интуитивное расположение. Я предположил, что это относится к «Сохранить в файл».
Карел Крал
48

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

введите описание изображения здесь

Азаде Ходжанди
источник
2
Также относится к 2012 году.
OldCurmudgeon
1
Также относится к 2014 году.
NucS
2
Если вы, как и я, запутались, опция «Типы данных в сценарий» отображается только в параметрах «Дополнительно» мастера «Создать сценарии ...» - вы не найдете ее в диалоговом окне основных параметров!
Etherman
36

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

Ghlouw
источник
6

Для тех, кто ищет версию для командной строки, 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
Nickolay
источник
Похоже, что mssql-scripter сейчас мертвый проект.
Алекс Сузуки
Правда, в прошлом году разработки не произошло, но у меня все работает нормально.
Николай
3

Просто обновляем скриншоты, чтобы помочь другим, поскольку я использую более новую версию 18, около 2019 года.

Щелкните правой кнопкой мыши БД: Задачи> Создать сценарии

Здесь вы можете выбрать определенные таблицы или перейти по умолчанию из всех.

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

Далее есть «Параметры сценариев», в которых вы можете выбрать выходной файл и т. Д. Как и в нескольких приведенных выше ответах (опять же, я просто вычищаю старые ответы для более новых, v18.4 SQL Server Management Studio), чего мы действительно хотим находится под кнопкой «Дополнительно». Для моих собственных целей мне нужны только данные.

Общие параметры вывода, включая вывод в файл. Расширенные возможности, включая данные!

И наконец, перед выполнением есть обзорная информация. После выполнения отчета отображается состояние операций. Итоги обзора.

Нил Гай Линдберг
источник
2

Вы также можете ознакомиться с надстройкой 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).

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

Nate
источник
2

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

  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.

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

Αλέκος
источник
1

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

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

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

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

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

Скриншот

Виниций Гонсалвес
источник