programing

SQL Server에서 INSERT IN으로 데이터 내보내기

codeshow 2023. 4. 7. 21:46
반응형

SQL Server에서 INSERT IN으로 데이터 내보내기

SQL Server 2008 Management Studio를 사용하고 있으며 테이블을 다른 DB 서버로 마이그레이션하고 싶습니다.

데이터를 SQL 스크립트에 삽입하여 내보낼 수 있는 옵션이 있습니까?

오브젝트 탐색기의 SSMS에서 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 오른쪽 버튼을 클릭하여 [태스크], [스크립트 생성]를 차례로 선택합니다.

이렇게 하면 단일 테이블 또는 모든 테이블에 대한 스크립트를 생성할 수 있으며 옵션 중 하나가 "스크립트 데이터"입니다.TRUE로 설정하면 마법사는 데이터에 대한 INSERT INTO() 문이 포함된 스크립트를 생성합니다.

2008 R2 또는 2012 를 사용하고 있는 경우는, 이하의 스크린샷을 참조해 주세요.

alt 텍스트

2008 R2 이후(예: 2012)

"스크립트할 데이터 유형"을 선택합니다. "데이터 전용", "스케마 및 데이터" 또는 "스케마 전용"이 기본값입니다.

여기에 이미지 설명 입력

또, Codeplex(소스 포함)의 「SSMS Addin」패키지도 있습니다.이 패키지는 거의 같은 기능 외에 몇 가지 기능(퀵 검색 등)을 제공합니다.

alt 텍스트

marc_s의 지시에 따라 여기까지 왔더니...

개체 탐색기의 SSMS에서 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 "태스크"를 선택한 다음 "스크립트 생성"을 선택합니다.

...마법사 화면이 표시되고 하단에 프리버튼, 넥스트버튼, 종료버튼, 취소버튼이 있습니다.[스크립트 소개], [개요설정], [스크립트 저장], [개요], [스크립트 저장], [개요], [개요], [개요], [개요]버튼이 표시됩니다.

[스크립팅 옵션 설정(Set Scripting Options)]스텝에서 [상세설정(Advanced)]를 클릭하여 옵션이 있는 페이지를 표시해야 합니다.그런 다음 Ghluw가 언급한 것처럼 "스크립트할 데이터의 유형"을 선택하여 수익을 창출합니다.

빨간색으로 강조 표시된 고급 버튼 1!!

SQL Server 2008R2를 사용하는 경우 [Types of data to script]필드를 설정해야 합니다.

여기에 이미지 설명 입력

SQL Server 2008 R2 를 실행하고 있는 경우, 위의 marc_s 로서 SSMS 로 이것을 실행하는 내장 옵션이 조금 변경되었습니다.선택하는 대신Script data = true그의 도표에서 보듯이, 이제 라고 불리는 새로운 선택지가 있다."Types of data to script""Table/View Options" 그룹 바로 위에 있습니다.여기서는 데이터, 스키마 및 데이터 또는 스키마만 스크립팅하도록 선택할 수 있습니다.마법처럼 작동한다.

2019년 경에 최신 v18을 사용하고 있기 때문에 다른 사람들을 돕기 위해 스크린샷을 업데이트하고 있습니다.

[ DB : Tasks ]> [ Generate Scripts ]를 오른쪽 클릭합니다.

여기서 특정 테이블을 선택하거나 기본값인 all을 사용할 수 있습니다.

여기서 특정 테이블을 선택하거나 기본값인 all을 사용할 수 있습니다.제 필요에 따라 한 개의 테이블만 표시합니다.

다음으로 출력 파일 등을 선택할 수 있는 "스크립팅 옵션"이 있습니다.위의 여러 답변과 마찬가지로 (다시 말씀드리지만) 새로운 v18.4 SQL Server Management Studio에 대한 오래된 답변은 "상세설정" 버튼 아래에 있습니다.제 목적을 위해서, 저는 데이터만 필요합니다.

파일로 출력을 포함한 일반적인 출력 옵션. 데이터를 포함한 고급 옵션!

마지막으로 실행 전 검토 요약이 있습니다.작업 실행 후 작업 상태가 표시됩니다.개요를 확인합니다.

SQL 서버 Mng Studio 2016의 경우:

여기에 이미지 설명 입력

명령줄 버전을 찾고 있는 사용자를 위해 Microsoft는 다음과 같은 기능을 제공하기 위해 릴리스했습니다.

$ pip install mssql-scripter

# Generate DDL scripts for all database objects and DML scripts (INSERT statements)
# for all tables in the Adventureworks database and save the script files in
# the current directory
$ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \
                 -f './' --file-per-object

dbatools.io은 PowerShell을 기반으로 훨씬 더 활발한 프로젝트이며, 를 위해 Get-DbaDbTable 및 Export-DbDbTableData cmdlet을 제공합니다.

PS C:\> Get-DbaDbTable -SqlInstance sql2016 -Database MyDatabase \
           -Table 'dbo.Table1', 'dbo.Table2' | 
        Export-DbaDbTableData -Path C:\temp\export.sql

SQL Server Management Studio 2008의 "Data Scripter Add-In"은 다음 사이트에서 확인할 수도 있습니다.

http://www.mssql-vehicle-data.com/SSMS


기능 목록:

  • SSMS 2008에서 개발되었으며 2005 버전에서는 현재(곧) 지원되지 않습니다.

  • MSSQL 및 MySQL 구문을 위해 데이터를 T-SQL로 빠르게 내보내기

  • CSV, TXT, XML도 지원됩니다.SQL이 제공하는 모든 잠재력, 성능 및 속도를 활용하십시오.

  • Access 또는 Excel이 스크립팅 작업을 수행하는데 몇 분 정도 걸릴 수 있습니다. SQL Server가 스크립팅 작업을 수행하도록 하고 데이터 내보내기에서 모든 추측 작업을 수행합니다.

  • 신속한 백업, DDL 조작 등을 위해 데이터 출력을 맞춤화할 수 있습니다.

  • 테이블 이름 및 데이터베이스 스키마를 필요에 따라 빠르고 효율적으로 변경

  • 열 이름을 내보내거나 이름 없이 데이터를 생성합니다.

  • 스크립팅할 개별 열을 선택할 수 있습니다.

  • 하위 데이터 집합(WHERE 절)을 선택할 수 있습니다.

  • 데이터 순서(ORDER BY 절)를 선택할 수 있습니다.

  • 데이터 조작이 필요한 번거로운 데이터베이스 디버깅 조작에 적합한 백업 유틸리티.실험 중에 데이터가 손실되지 않도록 하십시오.데이터를 바로 조작하세요!

위의 모든 것은 좋지만, 만약 당신이 필요로 한다면

  1. 조인된 여러 뷰 및 테이블에서 데이터 내보내기
  2. 다른 RDB에 대한 insert 문을 만듭니다.MS
  3. 임의의 RDBMS에서 임의의 RDB로의 데이터 이행

다음 요령이 유일한 방법이야

먼저 spool 파일을 작성하거나 source db 명령줄 클라이언트에서 결과 세트를 내보내는 방법을 알아봅니다.두 번째로 대상 DB에서 sql 문을 실행하는 방법을 알아봅니다.

마지막으로 소스 데이터베이스에서 sql 스크립트를 실행하여 대상 데이터베이스의 insert 문(및 기타 문)을 작성합니다.

SELECT '-- SET the correct schema' FROM dual;
SELECT 'USE test;' FROM dual;
SELECT '-- DROP TABLE IF EXISTS' FROM dual;
SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual;
SELECT '-- create the table' FROM dual;
SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual;

SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1;

위의 예는 테이블리스 선택을 위해 듀얼을 사용해야 하는 Oracle DB용으로 작성되었습니다.

결과 세트에는 대상 DB에 대한 스크립트가 포함됩니다.

다음은 커서를 사용하여 원본 테이블을 반복하여 데이터 마이그레이션 스크립트를 작성하는 예입니다.

SET NOCOUNT ON;  
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1

DECLARE cur CURSOR FOR 
    SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
    FROM CV_ORDER_STATUS
    ORDER BY [Stage]

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'

PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';

OPEN cur
FETCH NEXT FROM cur
    INTO @row

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @first = 1
        SET @first = 0
    ELSE
        SET @out = @out + ',' + CHAR(13);

    SET @out = @out + @row

    FETCH NEXT FROM cur into @row
END

CLOSE cur
DEALLOCATE cur

PRINT @out

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'

많이 찾아본 결과, 그게 가장 좋은 방법이었어.

데이터가 많고 콤팩트하고 우아한 스크립트가 필요한 경우 SSMS을 사용해 보십시오.

이 명령어는 대상 테이블에 항목을 삽입하고 트랜잭션을 매우 잘 처리하기 위해 모두 선택된 결합문을 생성합니다.

스크린샷

언급URL : https://stackoverflow.com/questions/1515969/exporting-data-in-sql-server-as-insert-into

반응형