Как сгенерировать скрипт SQL прагматично в C # - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу сгенерировать файл txt / sql, используя код c #, который будет иметь «скрипт вставки» для всех данных таблицы, доступных в базе данных. Например. Моя база данных называется «Тест». Имеет две таблицы

  1. Сотрудник

  2. Департамент.

Данные отдела:

ID Имя
1 аккаунт

Данные сотрудника

ID Имя Отдел D
1 Рави 1
6 Ripal 1

Теперь мой код на c # должен сгенерировать файл txt / sql со следующим содержимым.

USE [Test]
GO
SET IDENTITY_INSERT [dbo].[Department] ON 

GO
INSERT [dbo].[Department] ([ID], [Name]) VALUES (1, N'Account')
GO
SET IDENTITY_INSERT [dbo].[Department] OFF
GO
SET IDENTITY_INSERT [dbo].[Employee] ON 

GO
INSERT [dbo].[Employee] ([ID], [Name],  [DeptID]) VALUES (1, N'Ravi', 1)
GO
INSERT [dbo].[Employee] ([ID], [Name],  [DeptID]) VALUES (6, N'Ripal', 1)
GO
SET IDENTITY_INSERT [dbo].[Employee] OFF
GO

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы можете создать процедуру для этого и вызвать эту процедуру из C #

CREATE PROCEDURE sp_generate_insertscripts
(
    @TABLE_NAME VARCHAR(MAX),
    @FILTER_CONDITION VARCHAR(MAX)=''
)
AS
BEGIN

SET NOCOUNT ON

DECLARE @CSV_COLUMN VARCHAR(MAX),
        @QUOTED_DATA VARCHAR(MAX),
        @TEXT VARCHAR(MAX)

SELECT @CSV_COLUMN=STUFF
(
    (
     SELECT ',['+ NAME +']' FROM sys.all_columns 
     WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND 
     is_identity!=1 FOR XML PATH('')
    ),1,1,''
)

SELECT @QUOTED_DATA=STUFF
(
    (
     SELECT ' ISNULL(QUOTENAME('+NAME+','+QUOTENAME('''','''''')+'),'+'''NULL'''+')+'','''+'+' FROM sys.all_columns 
     WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND 
     is_identity!=1 FOR XML PATH('')
    ),1,1,''
)

SELECT @TEXT='SELECT ''INSERT INTO '+@TABLE_NAME+'('+@CSV_COLUMN+')VALUES('''+'+'+SUBSTRING(@QUOTED_DATA,1,LEN(@QUOTED_DATA)-5)+'+'+''')'''+' Insert_Scripts FROM '+@TABLE_NAME + @FILTER_CONDITION

--SELECT @CSV_COLUMN AS CSV_COLUMN,@QUOTED_DATA AS QUOTED_DATA,@TEXT TEXT

EXECUTE (@TEXT)

SET NOCOUNT OFF

END

--EXEC sp_generate_insertscripts 'tableName'
0 голосов
/ 13 сентября 2018

Большая часть базы данных имеет функции экспорта, которые можно использовать для создания сценария INSERT для переноса данных в другую базу данных, но она отличается от базы данных к базе данных.

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