Создайте 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
вверху. Измените это на базу данных, в которую вы хотели бы вставить данные.
Ответ 2
Используйте бесплатный пакет инструментов SSMS для "создания операторов вставки" ?
Или в SSMS (не нужно, чтобы на этом ПК было подтверждено) мастера экспорта также могут "script data"
Ответ 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" вставить, вы можете просто запустить его...
Ответ 4
используйте формат INSERT INTO... SELECT:
http://blog.sqlauthority.com/2007/08/15/sql-server-insert-data-from-one-table-to-another-table-insert-into-select-select-into-table/
Ответ 5
@RedFilter, ваше решение работает как шарм для меньшего размера данных.
В моем случае, когда я попытался открыть экспортированный файл sql, я столкнулся с исключением OutOfMemoryException.
![enter image description here]()
Размер файла составляет около 4 ГБ.
Чтобы получить данные из этого файла, я попробовал подход BCP (Bulk Copy Program).
Надеюсь, что это будет полной помощью для кого-то.