0

I want to generate txt/sql file using c# code which will have "insert script" for all the table data available in database. E.g. My database name is "Test". It has two tables

  1. Employee

  2. Department.

Department data:

ID Name
1 Account

Employee data

ID Name DeptD
1 Ravi 1
6 Ripal 1

Now my c# code should generate txt/sql file with following content.

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
5
  • From what ?? Please state your requirement clearly and with all inputs and the code to implemented. Commented Sep 13, 2018 at 4:43
  • SSMS allows you to do this: Right-click on the database then Tasks->Generate Scripts. It will open a pop-up window. Commented Sep 13, 2018 at 4:55
  • @coder of Code: I have updated my requirement. Commented Sep 13, 2018 at 5:49
  • @Alex: I want to do this grammatically. Commented Sep 13, 2018 at 5:50
  • I have created one procedure which is mentioned in answer that is generating insert script if you you would like to modify according to your situation then you cab. Check it Commented Sep 13, 2018 at 5:50

2 Answers 2

2

You can create procedure for this and call that procedure from 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'
Sign up to request clarification or add additional context in comments.

Comments

0

Most of the database has export functionality that you can use to generate INSERT script to transfer the data into another database but it differs from database to database.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.