Создать SQL INSERT Script со значениями, собранными из таблицы - PullRequest
50 голосов
/ 22 сентября 2011

Мне нужно создать скрипт INSERT, чтобы вставить в другую базу данных те же данные.Если в SQL Server я выберу «Таблица сценариев как> ВСТАВИТЬ В», я могу легко воссоздать каркас для оператора INSERT.Однако, поскольку у меня есть несколько записей для переноса, я бы предпочел не вставлять значения вручную.

Поэтому есть какой-либо способ «автоматически» получить скрипт INSERT со значениями (поступающими иззаполнена целевая таблица?

Я знаю, что это можно сделать с помощью SSIS, но мне интересно, возможно ли это также с помощью более быстрого решения.

Ответы [ 5 ]

97 голосов
/ 22 сентября 2011

Это можно сделать с помощью SSMS.

1 - щелкните правой кнопкой мыши базу данных в обозревателе объектов.
2 - выберите Задачи / Генерация сценариев ...
3- На странице Настройка параметров сценариев нажмите кнопку Дополнительно и убедитесь, что для Типы данных для сценария установлено значение Только данные .

Получившийся скрипт будет иметь оператор USE DATABASE вверху.Измените это на базу данных, в которую вы хотите вставить данные.

6 голосов
/ 22 сентября 2011

Использовать бесплатный пакет инструментов SSMS для «генерации операторов вставки»?

Или в SSMS (на этом ПК его нет для подтверждения)мастера экспорта также позволяют вам «записывать данные»

1 голос
/ 22 сентября 2011

Это будет зависеть от типов данных, потому что вам нужно условно заключать строковые значения в кавычки или приводить числовые значения в виде строк.Вам также нужно разобраться с проблемными символами:

SELECT 'INSERT INTO dbo.DestinationTable(col1, col2, col3) 
    SELECT ' + CONVERT(VARCHAR(12), col1) + ',' 
        + '''' + REPLACE(col2, '''', '''''') + ''','
        + '''' + REPLACE(col3, '''', '''''') + ''';'
    FROM dbo.SourceTable;

Для этого Vyas имеет довольно сложную хранимую процедуру .

Конечно, вы можете сделать это намного проще,просто сказать:

INSERT INTO OtherDatabase.dbo.DestinationTable(col1, col2, col3)
    SELECT col1, col2, col3 FROM dbo.SourceTable;

Другими словами, вам не нужно «писать сценарий» вставки, вы можете просто запустить ее ...

0 голосов
/ 16 июля 2019

@ RedFilter, ваше решение работает как шарм для меньшего количества данных РАЗМЕР .

В моем случае, когда я пытался открыть экспортированный файл sql, я столкнулся с OutOfMemoryException.

enter image description here

Размер файла составляет около 4 ГБ.

Чтобы получить данные из этого файла, япопробовал BCP (Программа массового копирования) подход.

Надеюсь, что это кому-нибудь поможет.

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