У меня есть основная таблица в базе данных.Сгенерировать скрипты вставки с IF NOT EXISTS
таблицы Пример меню
+-----------+-----------+-------------+---------+------------------------+
| Id | Key | Display Text| ParentId| CreatedOn
+-----------+-----------+-------------+---------+------------------------+
| 1 | Home | Home | NULL |2014-01-14 21:17:37.387 |
| 2 | About | About Us | NULL |2014-01-14 21:17:37.387 |
| 3 | Contact | Contact Us | NULL |2014-01-14 21:17:37.387 |
+-----------+-----------+------+------+---------+------------------------+
Я использовал для генерации сценария основных данных, как показано ниже для каждой записи.
IF NOT EXISTS(SELECT 1 FROM [Menu] WHERE Id=1 AND Key='Home')
BEGIN
SET IDENTITY_INSERT [dbo].[Menu] ON
INSERT INTO [dbo].[Menu]
(Id
,[Key]
,[DisplayText]
,[ParentId]
,[CreatedOn])
VALUES
(1
,'Home'
,'Home'
,NULL
,GETDATE()
)
SET IDENTITY_INSERT [dbo].[Menu] OFF
END
GO
- Повторяя же ручную работу создания записи для всех 70 записей & других основных данные (10k rows
)
Однако есть некоторые существующие таблицы ApplicationMenu
в другой базе данных, имеющие тот же столбец, типы данные. Мы хотели бы создать сценарий ниже для нас, используя некоторую хранимую процедуру.
Можно ли создать процедуру, как показано ниже
CREATE PROCEDURE spGenerateInsertScripts
(
@SourceTableName VARCHAR(100),
@ExistsWhereClauseTemplate NVARCHAR(1000),
@TargetTableName VARCHAR(100)
)
BEGIN
-- In some loop create those above insert statements
END
Мы хотели бы выполнить, как ниже
exec spGenerateInsertScripts 'ApplicationMenu'
, 'WHERE Id={Id} AND Key={Key}'
, 'Menu'
Здесь {Id} & {Key} будет читать каждый строка из существующей таблицы и заменена.
Это фактически уменьшит количество ручной работы для нас.
Примечание:
Мы не мог использовать SQL для вставки сервера инструмента создания сценария, так как мы хотим, чтобы проверить наличие данных, а также необходимость сохранения записей, добавленных пользователем с помощью нашего приложения.
нужно создать вставки скриптов, так что мы можем просто работать в будущем, даже если ApplicationTable не доступен
Можно ли написать такую процедуру для создания вставки сценария из другой таблицы на основе существования? Как и sql server Generate Scripts work for table creation by looking into INFORMATION_SCHEMA
таблица, я так и ожидаю.
Окончательный результат процедуры будет как PRINT @insert_Sql_Statements
Итак, вы хотите использовать таблицу ApplicationMenu (в другой базе данных) для создания строк в базе данных меню (если эти строки еще не существуют). Использование столбцов Id и Key из ApplicationMenu? – Umair
Почему вы просто не создаете хранимую процедуру, которая принимает параметр таблицы и передает значения хранимой процедуре и возвращает значения, которые были добавлены в целевую таблицу. ???? –
@Umair, Да. Обе таблицы имеют одинаковое имя столбца, типы данных. Я хотел бы импортировать все ApplicationMenu в мою таблицу меню только в том случае, если они не существуют – Billa