Експорт даних у SQL Server як INSERT INTO


413

Я використовую SQL Server 2008 Studio Studio і маю таблицю, яку хочу перенести на інший сервер db.

Чи є можливість експортувати дані у вигляді вставки в SQL-скрипт ??

Відповіді:


682

У SSMS в Провіднику об’єктів клацніть правою кнопкою миші на базі даних, клацніть правою кнопкою миші та виберіть "Завдання", а потім "Створити сценарії".

Це дозволить генерувати сценарії для однієї або всіх таблиць, а одним із варіантів є "Дані сценарію". Якщо встановити його як TRUE, майстер згенерує сценарій із твердженням INSERT INTO () для ваших даних.

Якщо використання 2008 R2 або 2012 називається чимось іншим, дивіться скріншот нижче цього

alt текст

2008, R2 або новішої версії, наприклад, 2012

Виберіть "Типи даних до сценарію", які можуть бути "Тільки дані", "Схема та дані" або "Тільки схема" - за замовчуванням).

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

А потім на Codeplex (включаючи джерело) є пакет " SSMS Addin ", який обіцяє майже таку ж функціональність та ще декілька (наприклад, швидке пошуку тощо)

alt текст


Я щойно встановив надбудову від Codeplex. Приємно. Дякую за інформацію.
Роб Гаррісон

1
SMSS Add In працював на мене у 2008 році. Scripter даних Add In не зробив.
Філ Хейл

5
У 2008 році R2 опцію "Типи даних для сценарію" можна знайти на екрані "Встановити параметри сценарію". Натисніть там кнопку «Додатково».
raymi

3
Ці додатки працюють у 2008 р. 2? SSMS Addin кидає виняток при завантаженні.
jocull

2
Подивіться на відповідь @ruffin нижче, щоб дізнатися більше про скріншоти
Keith Sirmons

117

Заради надто очевидної бездумності, дотримуючись інструкцій marc_s сюди ...

У SSMS в Провіднику об’єктів клацніть правою кнопкою миші на базі даних правою кнопкою миші та виберіть "Завдання", а потім "Створити сценарії".

... Потім я бачу екран майстра із написом " Вступ, вибір об'єктів, встановлення параметрів сценаріїв, резюме та збереження чи публікація сценаріїв " з кнопками "попередній", "наступний", "закінчити", "скасувати" внизу.

На кроці "Установити параметри сценарію" вам потрібно натиснути "Додатково", щоб отримати сторінку з параметрами. Потім, як згадував Ghlouw , тепер ви вибираєте "Типи даних до сценарію" та отримуєте прибуток.

вдосконалена кнопка ОСВІТЛЕНА В ЧЕРВОНІ! 1 !!


13
Дякую, ця кнопка має не дуже інтуїтивне розміщення. Я вважав, що він належить до "Зберегти у файл".
Карел Цар

48

Якщо ви використовуєте його SQLServer 2008R2, вам потрібно встановити Типи даних у поле скрипту.

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


2
Також стосується 2012 року
OldCurmudgeon

1
Також стосується 2014 року
NucS

2
Якщо ви плутаєтесь як я, параметр "Типи даних до сценарію" видно лише в параметрах "Додатково" майстра "Створення скриптів ..." - ви не знайдете його в головному діалоговому вікні параметрів!
Етерман

36

Якщо ви використовуєте SQL Server 2008 R2, вбудовані параметри, щоб зробити це в SSMS, як описані вище marc_s, трохи змінилися. Замість вибору, Script data = trueяк показано на його діаграмі, тепер з'явився новий варіант, який називається "Types of data to script"трохи вище "Таблиця / Параметри подання". Тут ви можете вибрати лише дані сценарію, схему та дані чи схему. Працює як шарм.



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

Здається, що mssql-script зараз мертвий проект.
Алекс Сузукі

Щоправда, жодного розвитку не відбулося за останній рік, але це працює добре для мене.
Nickolay

3

Просто оновлення скріншотів, щоб допомогти іншим, оскільки я використовую новішу версію v18, приблизно 2019 року.

Клацніть правою кнопкою миші БД: Завдання> Створення скриптів

Тут ви можете вибрати певні таблиці або перейти за замовчуванням для всіх.

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

Далі, є "Параметри сценаріїв", де ви можете вибрати вихідний файл і т. Д. Як і в декількох відповідях вище (знову ж, я просто запилюю старі відповіді на новіші версії V18.4 SQL Server Management Studio), чого ми справді хочемо знаходиться під кнопкою "Додатково". Для власних цілей мені потрібні лише дані.

Загальні параметри виводу, включаючи вихід у файл. Розширені варіанти, включаючи дані!

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


2

Ви також можете перевірити "надбудову для скриптів даних" для 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).

  • Ви можете обрати впорядкування даних (ЗАМОВИТИ ЗА РАЗОМ).

  • Відмінна утиліта резервного копіювання для операцій з налагодження шорсткої бази даних, які потребують маніпуляції з даними. Не втрачайте даних під час експерименту. Маніпулюйте даними на льоту!


2

Все вищесказане приємно, але якщо потрібно

  1. Експортуйте дані з декількох представлень даних та таблиць із з'єднаннями
  2. Створіть оператори вставлення для різних RDBMS
  3. Перенесення даних з будь-якої RDBMS на будь-яку RDBMS

то наступний трюк - єдиний спосіб.

Спочатку дізнайтеся, як створювати файли котушки або експортувати набори результатів з клієнтського командного рядка джерела db. По-друге, дізнайтеся, як виконувати оператори sql на db призначення.

Нарешті, створіть оператори вставлення (та будь-які інші заяви) для бази даних призначення, запустивши скрипт 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;

Наведений вище приклад був створений для db Oracle, коли для вибору без таблиць потрібне використання dual.

Набір результатів буде містити скрипт для призначення db.


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

Це генерує об'єднання всіх вибраних операторів, щоб вставити елементи в цільові таблиці та досить добре обробляти транзакції.

Знімок екрана

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