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


413

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

SQL 스크립트에 삽입으로 데이터를 내보내는 옵션이 있습니까 ??

답변:


682

개체 탐색기의 SSMS에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 마우스 오른쪽 단추를 클릭하여 "작업"을 선택한 다음 "스크립트 생성"을 선택하십시오.

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

2008 R2 또는 2012를 사용하는 경우 다른 것을 호출합니다. 아래 스크린 샷을 참조하십시오.

대체 텍스트

2008 R2 이상 (예 : 2012)

"데이터 만", "스키마 및 데이터"또는 "스키마 만"(기본값) 인 "스크립트 할 데이터 유형"을 선택하십시오.

여기에 이미지 설명을 입력하십시오

그런 다음 Codeplex (소스 포함)에 " SSMS Addin "패키지가있어 거의 동일한 기능과 몇 가지 (빠른 찾기 등)를 약속합니다.

대체 텍스트


방금 Codeplex에서 애드 인을 설치했습니다. 좋은. 정보에 대해서 감사드립니다.
Rob Garrison

1
SMSS Add In은 2008 년에 저에게 효과적이었습니다. Data Scripter Add In은 그렇지 않았습니다.
Phil Hale

5
2008 R2의 "스크립트 유형 설정"옵션은 "스크립트 옵션 설정"화면에서 찾을 수 있습니다. 거기에서 "고급"버튼을 누르십시오.
raymi

3
이 애드 인은 2008 R2에서 작동합니까? SSMS Addin에서로드시 예외가 발생했습니다.
jocull

2
아래에 대한 @ruffin 대답을 살펴보십시오 더 많은 스크린 샷
키스 Sirmons에게

117

지나치게 명백한 두뇌가 없기 위해, marc_s의 지시에 따라 여기에 ...

개체 탐색기의 SSMS에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 "작업"을 선택한 다음 "스크립트 생성"을 선택하십시오.

... 그러면 하단에 prev, next, finish, cancel 버튼이있는 " 소개, 개체 선택, 스크립팅 옵션 설정, 요약 및 스크립트 저장 또는 게시 "마법사 화면이 나타납니다 .

설정 스크립팅 옵션 단계 , 당신은해야 "고급"을 클릭 옵션으로 페이지를 얻을 수 있습니다. 그런 다음 Ghlouw 가 언급했듯이 이제 "스크립트 유형의 데이터"와 수익을 선택합니다.

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


13
감사합니다.이 버튼은 직관적이지 않습니다. "파일에 저장"에 속하는 것으로 가정했습니다.
Karel Kral

48

SQLServer 2008R2를 사용하는 경우 데이터 유형을 스크립트 필드로 설정해야합니다.

여기에 이미지 설명을 입력하십시오


2
또한 2012 년에 적용
OldCurmudgeon

1
또한 2014 년에 적용
NucS

2
나처럼 혼란스러워하는 경우 "스크립트 생성 데이터"옵션은 "스크립트 생성 ..."마법사의 "고급"옵션에서만 볼 수 있습니다. 기본 옵션 대화 상자에서 찾을 수 없습니다!
Etherman

36

SQL Server 2008 R2를 실행하는 경우 위에 설명 된 marc_s가 약간 변경되었으므로 SSMS에서이를 수행하기위한 기본 제공 옵션이 있습니다. Script data = true다이어그램에 표시된대로 선택하는 대신 "Types of data to script""테이블 /보기 옵션"그룹 바로 위에 새 옵션이 있습니다. 여기에서는 데이터 만, 스키마 및 데이터 또는 스키마 만 스크립팅하도록 선택할 수 있습니다. 매력처럼 작동합니다.



6

커맨드 라인 버전을 찾는 사람들을 위해 Microsoft 는 다음과 같이 출시mssql-scripter 했습니다.

$ 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

mssql-scripter는 현재 죽은 프로젝트 인 것으로 보입니다.
Alex Suzuki

사실, 작년에는 개발이 없었지만 나에게 잘 작동합니다.
Nickolay 2016 년

3

2019 년경 최신 v18을 사용하면서 다른 사람들을 돕기 위해 스크린 샷을 업데이트하기 만하면됩니다.

DB를 마우스 오른쪽 단추로 클릭하십시오. 태스크> 스크립트 생성

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

여기서 특정 테이블을 선택하거나 기본값을 모두 사용할 수 있습니다. 내 필요에 따라 하나의 테이블 만 나타냅니다.

다음으로, 출력 파일 등을 선택할 수있는 "스크립팅 옵션"이 있습니다. 위의 여러 답변에서와 마찬가지로 (더욱 최신 v18.4 SQL Server Management Studio에 대한 이전 답변을 정리하고 있습니다.) "고급"버튼 아래에 있습니다. 내 목적으로는 데이터 만 있으면됩니다.

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

마지막으로, 실행 전에 검토 요약이 있습니다. 실행 후 작업 상태 보고서가 표시됩니다. 검토 요약.


2

다음에서 SQL Server Management Studio 2008의 "데이터 스크립터 추가 기능"을 확인할 수도 있습니다.

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 절).

  • 데이터 조작이 필요한 지저분한 데이터베이스 디버깅 작업을위한 훌륭한 백업 유틸리티. 실험하는 동안 데이터를 잃지 마십시오. 즉석에서 데이터를 조작하십시오!


2

위의 모든 것이 좋지만 필요한 경우

  1. 조인을 사용하여 여러 뷰 및 테이블에서 데이터 내보내기
  2. 다른 RDBMS에 대한 삽입 문 작성
  3. 모든 RDBMS에서 RDBMS로 데이터 마이그레이션

다음 트릭은 유일한 방법입니다.

먼저 스풀 파일을 작성하거나 소스 db 명령 행 클라이언트에서 결과 세트를 내보내는 방법을 학습하십시오. 두 번째는 대상 DB에서 sql 문을 실행하는 방법을 배웁니다.

마지막으로 소스 데이터베이스에서 sql 스크립트를 실행하여 대상 데이터베이스에 대한 삽입 명령문 (및 기타 명령문)을 작성하십시오. 예 :

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에 대한 스크립트가 포함됩니다.


1

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

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'

0

많이 검색 한 후에는 내 최고의 기회였습니다.

데이터가 많고 간결하고 우아한 스크립트가 필요한 경우 다음을 시도하십시오. SSMS 도구 팩을

대상 테이블에 항목을 삽입하고 트랜잭션을 잘 처리하기 위해 모든 select 문을 통합합니다.

스크린 샷

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.