[SQL] 어떻게 삽입 SQL 형식으로 테이블의 모든 데이터를 내보낼?
SQL어떻게 삽입 SQL 형식으로 테이블의 모든 데이터를 내보낼?
나는 데이터베이스에서 테이블 (A_table 호출)가 Microsoft SQL Server 관리 Studio에서 (A_db 호출), 10 개 행이 있습니다.
나는 다른 데이터베이스를 (그것을 B_db 전화), 그리고 그것은 A_table가이 같은 열 설정을 가진 테이블 (B_table를 호출)이있다. 그러나 B_table가 비어 있습니다.
내가 원하는 것은 :
테이블에서 삽입 SQL을 생성하는 마이크로 소프트 SQL Server 관리 Studio 2012에서 어떤 옵션이 있습니까? 또는 그렇게 할 수있는 다른 옵션이 있습니다?
해결법
-
==============================
1.빠르고 쉬운 방법 :
빠르고 쉬운 방법 :
나는 보통 이런 경우에서 새 쿼리 편집기 창을 생성 한 후 단지 필요한 수정을한다.
-
==============================
2.나는이 오래된 질문 알아요,하지만 하나 개의 테이블에서 다른 복사 데이터에 대한 다른 옵션이있는 경우 빅토리 오도 물었다. 모두에게 (또는 이와 유사한 디자인을 가지고 있지 않을 수도 있습니다) 다른 한 테이블에서 레코드를 삽입 할 수있는 매우 짧고 빠른 방법이있다.
나는이 오래된 질문 알아요,하지만 하나 개의 테이블에서 다른 복사 데이터에 대한 다른 옵션이있는 경우 빅토리 오도 물었다. 모두에게 (또는 이와 유사한 디자인을 가지고 있지 않을 수도 있습니다) 다른 한 테이블에서 레코드를 삽입 할 수있는 매우 짧고 빠른 방법이있다.
당신은 테이블 B 테이블에 ID 열이없는 경우 :
INSERT INTO A_db.dbo.A_table SELECT * FROM B_db.dbo.B_table
당신이 테이블 B_table에 ID 열이있는 경우, 당신은 삽입 할 열을 지정해야합니다. 기본적으로 당신은 기본적으로 증가 자동 될 것 ID 열을 제외하고 모두를 선택합니다.
혹시 BDB 기존 테이블이없는 경우
SELECT * INTO B_db.dbo.B_table FROM A_db.dbo.A_table
기존의 모든 값을 데이터베이스 B_db 테이블 B_table을 만듭니다
-
==============================
3.DumpDataFromTable sproc에 의해 테이블에서 파일로 데이터를 덤프하는 또 다른 방법
DumpDataFromTable sproc에 의해 테이블에서 파일로 데이터를 덤프하는 또 다른 방법
EXEC dbo.DumpDataFromTable @SchemaName = 'dbo' ,@TableName = 'YourTableName' ,@PathOut = N'c:\tmp\scripts\' -- folder must exist !!!'
참고 : 설정하지 다음 간부 후속 라인 번 경우 SQL은 파일을 만들 수있는 권한이 있어야합니다
EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE;
이 스크립트에 의해 당신은 sproc에 호출 할 수 DumpDataFromTable.sql을 대신 관리 Studio에서 하나가 수동으로 하나의 일을, 한 번에 많은 테이블을 덤프
기본적으로 생성 된 서류의 형식 등이 될 것입니다
INSERT INTO <TableName> SELECT <Values>
또는 당신은에 생성 된 형식을 변경할 수 있습니다
SELECT ... FROM
설정 변수가 @BuildMethod = 2
전체의 sproc 코드 :
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DumpDataFromTable]') AND type in (N'P', N'PC')) DROP PROCEDURE dbo.[DumpDataFromTable] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Oleg Ciobanu -- Create date: 20171214 -- Version 1.02 -- Description: -- dump data in 2 formats -- @BuildMethod = 1 INSERT INTO format -- @BuildMethod = 2 SELECT * FROM format -- -- SQL must have permission to create files, if is not set-up then exec follow line once -- EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE; -- -- ============================================= CREATE PROCEDURE [dbo].[DumpDataFromTable] ( @SchemaName nvarchar(128) --= 'dbo' ,@TableName nvarchar(128) --= 'testTable' ,@WhereClause nvarchar (1000) = '' -- must start with AND ,@BuildMethod int = 1 -- taking values 1 for INSERT INTO forrmat or 2 for SELECT from value Table ,@PathOut nvarchar(250) = N'c:\tmp\scripts\' -- folder must exist !!!' ,@AsFileNAme nvarchar(250) = NULL -- if is passed then will use this value as FileName ,@DebugMode int = 0 ) AS BEGIN SET NOCOUNT ON; -- run follow next line if you get permission deny for sp_OACreate,sp_OAMethod -- EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE; DECLARE @Sql nvarchar (max) DECLARE @SqlInsert nvarchar (max) = '' DECLARE @Columns nvarchar(max) DECLARE @ColumnsCast nvarchar(max) -- cleanUp/prepraring data SET @SchemaName = REPLACE(REPLACE(@SchemaName,'[',''),']','') SET @TableName = REPLACE(REPLACE(@TableName,'[',''),']','') SET @AsFileNAme = NULLIF(@AsFileNAme,'') SET @AsFileNAme = REPLACE(@AsFileNAme,'.','_') SET @AsFileNAme = COALESCE(@PathOut + @AsFileNAme + '.sql', @PathOut + @SchemaName + ISNULL('_' + @TableName,N'') + '.sql') --debug IF @DebugMode = 1 PRINT @AsFileNAme -- Create temp SP what will be responsable for generating script files DECLARE @PRC_WritereadFile VARCHAR(max) = 'IF EXISTS (SELECT * FROM sys.objects WHERE type = ''P'' AND name = ''PRC_WritereadFile'') BEGIN DROP Procedure PRC_WritereadFile END;' EXEC (@PRC_WritereadFile) -- ' SET @PRC_WritereadFile = 'CREATE Procedure PRC_WritereadFile ( @FileMode INT -- Recreate = 0 or Append Mode 1 ,@Path NVARCHAR(1000) ,@AsFileNAme NVARCHAR(500) ,@FileBody NVARCHAR(MAX) ) AS DECLARE @OLEResult INT DECLARE @FS INT DECLARE @FileID INT DECLARE @hr INT DECLARE @FullFileName NVARCHAR(1500) = @Path + @AsFileNAme -- Create Object EXECUTE @OLEResult = sp_OACreate ''Scripting.FileSystemObject'', @FS OUTPUT IF @OLEResult <> 0 BEGIN PRINT ''Scripting.FileSystemObject'' GOTO Error_Handler END IF @FileMode = 0 BEGIN -- Create EXECUTE @OLEResult = sp_OAMethod @FS,''CreateTextFile'',@FileID OUTPUT, @FullFileName IF @OLEResult <> 0 BEGIN PRINT ''CreateTextFile'' GOTO Error_Handler END END ELSE BEGIN -- Append EXECUTE @OLEResult = sp_OAMethod @FS,''OpenTextFile'',@FileID OUTPUT, @FullFileName, 8, 0 -- 8- forappending IF @OLEResult <> 0 BEGIN PRINT ''OpenTextFile'' GOTO Error_Handler END END EXECUTE @OLEResult = sp_OAMethod @FileID, ''WriteLine'', NULL, @FileBody IF @OLEResult <> 0 BEGIN PRINT ''WriteLine'' GOTO Error_Handler END EXECUTE @OLEResult = sp_OAMethod @FileID,''Close'' IF @OLEResult <> 0 BEGIN PRINT ''Close'' GOTO Error_Handler END EXECUTE sp_OADestroy @FS EXECUTE sp_OADestroy @FileID GOTO Done Error_Handler: DECLARE @source varchar(30), @desc varchar (200) EXEC @hr = sp_OAGetErrorInfo null, @source OUT, @desc OUT PRINT ''*** ERROR ***'' SELECT OLEResult = @OLEResult, hr = CONVERT (binary(4), @hr), source = @source, description = @desc Done: '; -- ' EXEC (@PRC_WritereadFile) EXEC PRC_WritereadFile 0 /*Create*/, '', @AsFileNAme, '' ;WITH steColumns AS ( SELECT 1 as rn, c.ORDINAL_POSITION ,c.COLUMN_NAME as ColumnName ,c.DATA_TYPE as ColumnType FROM INFORMATION_SCHEMA.COLUMNS c WHERE 1 = 1 AND c.TABLE_SCHEMA = @SchemaName AND c.TABLE_NAME = @TableName ) --SELECT * SELECT @ColumnsCast = ( SELECT CASE WHEN ColumnType IN ('date','time','datetime2','datetimeoffset','smalldatetime','datetime','timestamp') THEN 'convert(nvarchar(1001), s.[' + ColumnName + ']' + ' , 121) AS [' + ColumnName + '],' --,convert(nvarchar, [DateTimeScriptApplied], 121) as [DateTimeScriptApplied] ELSE 'CAST(s.[' + ColumnName + ']' + ' AS NVARCHAR(1001)) AS [' + ColumnName + '],' END as 'data()' FROM steColumns t2 WHERE 1 =1 AND t1.rn = t2.rn FOR xml PATH('') ) ,@Columns = ( SELECT '[' + ColumnName + '],' as 'data()' FROM steColumns t2 WHERE 1 =1 AND t1.rn = t2.rn FOR xml PATH('') ) FROM steColumns t1 -- remove last char IF lEN(@Columns) > 0 BEGIN SET @Columns = SUBSTRING(@Columns, 1, LEN(@Columns)-1); SET @ColumnsCast = SUBSTRING(@ColumnsCast, 1, LEN(@ColumnsCast)-1); END -- debug IF @DebugMode = 1 BEGIN print @ColumnsCast print @Columns select @ColumnsCast , @Columns END -- build unpivoted Data SET @SQL = ' SELECT u.rn , c.ORDINAL_POSITION as ColumnPosition , c.DATA_TYPE as ColumnType , u.ColumnName , u.ColumnValue FROM (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn, ' + CHAR(13) + @ColumnsCast + CHAR(13) + 'FROM [' + @SchemaName + '].[' + @TableName + '] s' + CHAR(13) + 'WHERE 1 = 1' + CHAR(13) + COALESCE(@WhereClause,'') + CHAR(13) + ') tt UNPIVOT ( ColumnValue FOR ColumnName in ( ' + CHAR(13) + @Columns + CHAR(13) + ' ) ) u LEFT JOIN INFORMATION_SCHEMA.COLUMNS c ON c.COLUMN_NAME = u.ColumnName AND c.TABLE_SCHEMA = '''+ @SchemaName + ''' AND c.TABLE_NAME = ''' + @TableName +''' ORDER BY u.rn , c.ORDINAL_POSITION ' -- debug IF @DebugMode = 1 BEGIN print @Sql exec (@Sql) END -- prepare data for cursor IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp CREATE TABLE #tmp ( rn bigint ,ColumnPosition int ,ColumnType varchar (128) ,ColumnName varchar (128) ,ColumnValue nvarchar (2000) -- I hope this size will be enough for storring values ) SET @Sql = 'INSERT INTO #tmp ' + CHAR(13) + @Sql -- debug IF @DebugMode = 1 BEGIN print @Sql END EXEC (@Sql) -- Insert dummy rec, otherwise will not proceed the last rec :) INSERT INTO #tmp (rn) SELECT MAX(rn) + 1 FROM #tmp IF @DebugMode = 1 BEGIN SELECT * FROM #tmp END DECLARE @rn bigint ,@ColumnPosition int ,@ColumnType varchar (128) ,@ColumnName varchar (128) ,@ColumnValue nvarchar (2000) ,@i int = -1 -- counter/flag ,@ColumnsInsert varchar(max) = NULL ,@ValuesInsert nvarchar(max) = NULL DECLARE cur CURSOR FOR SELECT rn, ColumnPosition, ColumnType, ColumnName, ColumnValue FROM #tmp ORDER BY rn, ColumnPosition -- note order is really important !!! OPEN cur FETCH NEXT FROM cur INTO @rn, @ColumnPosition, @ColumnType, @ColumnName, @ColumnValue IF @BuildMethod = 1 BEGIN SET @SqlInsert = 'SET NOCOUNT ON;' + CHAR(13); EXEC PRC_WritereadFile 1 /*Add*/, '', @AsFileName, @SqlInsert SET @SqlInsert = '' END ELSE BEGIN SET @SqlInsert = 'SET NOCOUNT ON;' + CHAR(13); SET @SqlInsert = @SqlInsert + 'SELECT *' + CHAR(13) + 'FROM (' + CHAR(13) + 'VALUES' EXEC PRC_WritereadFile 1 /*Add*/, '', @AsFileName, @SqlInsert SET @SqlInsert = NULL END SET @i = @rn WHILE @@FETCH_STATUS = 0 BEGIN IF (@i <> @rn) -- is a new row BEGIN IF @BuildMethod = 1 -- build as INSERT INTO -- as Default BEGIN SET @SqlInsert = 'INSERT INTO [' + @SchemaName + '].[' + @TableName + '] (' + CHAR(13) + @ColumnsInsert + ')' + CHAR(13) + 'VALUES (' + @ValuesInsert + CHAR(13) + ');' END ELSE BEGIN -- build as Table select IF (@i <> @rn) -- is a new row BEGIN SET @SqlInsert = COALESCE(@SqlInsert + ',','') + '(' + @ValuesInsert+ ')' EXEC PRC_WritereadFile 1 /*Add*/, '', @AsFileNAme, @SqlInsert SET @SqlInsert = '' -- in method 2 we should clear script END END -- debug IF @DebugMode = 1 print @SqlInsert EXEC PRC_WritereadFile 1 /*Add*/, '', @AsFileNAme, @SqlInsert -- we have new row -- initialise variables SET @i = @rn SET @ColumnsInsert = NULL SET @ValuesInsert = NULL END -- build insert values IF (@i = @rn) -- is same row BEGIN SET @ColumnsInsert = COALESCE(@ColumnsInsert + ',','') + '[' + @ColumnName + ']' SET @ValuesInsert = CASE -- date --WHEN -- @ColumnType IN ('date','time','datetime2','datetimeoffset','smalldatetime','datetime','timestamp') --THEN -- COALESCE(@ValuesInsert + ',','') + '''''' + ISNULL(RTRIM(@ColumnValue),'NULL') + '''''' -- numeric WHEN @ColumnType IN ('bit','tinyint','smallint','int','bigint' ,'money','real','','float','decimal','numeric','smallmoney') THEN COALESCE(@ValuesInsert + ',','') + '' + ISNULL(RTRIM(@ColumnValue),'NULL') + '' -- other types treat as string ELSE COALESCE(@ValuesInsert + ',','') + '''' + ISNULL(RTRIM( -- escape single quote REPLACE(@ColumnValue, '''', '''''') ),'NULL') + '''' END END FETCH NEXT FROM cur INTO @rn, @ColumnPosition, @ColumnType, @ColumnName, @ColumnValue -- debug IF @DebugMode = 1 BEGIN print CAST(@rn AS VARCHAR) + '-' + CAST(@ColumnPosition AS VARCHAR) END END CLOSE cur DEALLOCATE cur IF @BuildMethod = 1 BEGIN PRINT 'ignore' END ELSE BEGIN SET @SqlInsert = CHAR(13) + ') AS vtable ' + CHAR(13) + ' (' + @Columns + CHAR(13) + ')' EXEC PRC_WritereadFile 1 /*Add*/, '', @AsFileNAme, @SqlInsert SET @SqlInsert = NULL END PRINT 'Done: ' + @AsFileNAme END
또는 https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts에서 최신 버전을 다운로드 할 수 있습니다
-
==============================
4.명령 리눅스 시스템 터미널에서 데이터베이스 백업을 얻을 수 있습니다.
명령 리눅스 시스템 터미널에서 데이터베이스 백업을 얻을 수 있습니다.
sqlcmd -S localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'/var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
누군가가 도움이되기를 바랍니다.
-
==============================
5.우리는 다른 테이블에 하나 개의 테이블 데이터를 덤프 쿼리 아래 사용해야합니다.
우리는 다른 테이블에 하나 개의 테이블 데이터를 덤프 쿼리 아래 사용해야합니다.
Select * into SampleProductTracking_tableDump from SampleProductTracking;
SampleProductTracking_tableDump가 자동으로 생성됩니다 새 테이블입니다 위의 쿼리를 사용하는 경우. 그것은 SampleProductTracking_tableDump에 SampleProductTracking에서 레코드를 복사합니다
-
==============================
6.나는 Microsoft SQL Server 관리 Studio에서 어떤 옵션을 보지 못했다 2012 - 날짜 그렇게 할 것입니다.
나는 Microsoft SQL Server 관리 Studio에서 어떤 옵션을 보지 못했다 2012 - 날짜 그렇게 할 것입니다.
난 당신이 시간을 주어 T-SQL에서 뭔가를 쓸 수 있습니다 확신합니다.
QUEST에서 두꺼비를 체크 아웃 - 지금 DELL 소유.
http://www.toadworld.com/products/toad-for-oracle/f/10/t/9778.aspx
Select your rows. Rt -click -> Export Dataset. Choose Insert Statement format Be sure to check “selected rows only”
두꺼비에 대한 좋은 점은, 그것은 모두 SQL 서버와 오라클와 함께 작동합니다. 당신이 모두 일을해야하는 경우, 그것은 좋은 투자입니다.
from https://stackoverflow.com/questions/20542819/how-to-export-all-data-from-table-to-an-insertable-sql-format by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server 데이터베이스에있는 모든 데이터를 삭제 (0) | 2020.06.20 |
---|---|
[SQL] 어떻게하지 널 확인하고 SQL 서버에 빈 문자열은 아닌가하는? (0) | 2020.06.20 |
[SQL] 데이터베이스에 "이벤트 반복"표현하는 가장 좋은 방법은 무엇입니까? (0) | 2020.06.20 |
[SQL] 어떻게 SQL을 사용하여 최근 24 시간 레코드를 선택하려면? (0) | 2020.06.20 |
[SQL] SQL 최소 순차적 일 액세스를 결정하기 위해? (0) | 2020.06.20 |