Создайте SQL INSERT Script со значениями, собранными из таблицы

Мне нужно создать INSERT script, чтобы вставить в другую базу данных те же данные.
Если в SQL Server я выбираю" Script table as > INSERT To", я могу легко воссоздать скелет для выражение INSERT. Однако, поскольку у меня есть несколько записей для переноса, я бы предпочел не вводить значения вручную.

Следовательно, есть ли способ "автоматически" получить INSERT script с заполненными значениями (исходящими из целевой таблицы)?

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

Ответ 1

Вы можете сделать это с помощью SSMS.

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

В результате script будет иметь оператор USE DATABASE вверху. Измените это на базу данных, в которую вы хотели бы вставить данные.

Ответ 3

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

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;

Другими словами, вам не нужно "script" вставить, вы можете просто запустить его...

Ответ 5

@RedFilter, ваше решение работает как шарм для меньшего размера данных.

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

enter image description here

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

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

Надеюсь, что это будет полной помощью для кого-то.