Xuất dữ liệu trong SQL Server dưới dạng INSERT INTO


413

Tôi đang sử dụng SQL Server 2008 Management Studio và có một bảng tôi muốn di chuyển sang một máy chủ db khác.

Có tùy chọn nào để xuất dữ liệu dưới dạng chèn vào tập lệnh SQL không ??

Câu trả lời:


682

Trong SSMS trong Object Explorer, nhấp chuột phải vào cơ sở dữ liệu, nhấp chuột phải và chọn "Nhiệm vụ" và sau đó "Tạo tập lệnh".

Điều này sẽ cho phép bạn tạo tập lệnh cho một hoặc tất cả các bảng và một trong các tùy chọn là "Dữ liệu tập lệnh". Nếu bạn đặt thành TRUE, trình hướng dẫn sẽ tạo tập lệnh với câu lệnh INSERT INTO () cho dữ liệu của bạn.

Nếu sử dụng 2008 R2 hoặc 2012, nó được gọi là cái gì khác, xem ảnh chụp màn hình bên dưới cái này

văn bản thay thế

2008 R2 trở lên, ví dụ 2012

Chọn "Loại dữ liệu cho tập lệnh" có thể là "Chỉ dữ liệu", "Lược đồ và dữ liệu" hoặc "Chỉ lược đồ" - mặc định).

nhập mô tả hình ảnh ở đây

Và sau đó có Gói " SSMS Addin " trên Codeplex (bao gồm cả nguồn) hứa hẹn khá nhiều chức năng tương tự và một vài thứ nữa (như tìm nhanh, v.v.)

văn bản thay thế


Tôi vừa cài đặt addin từ Codeplex. Đẹp. Cảm ơn bạn về thông tin.
Rob Garrison

1
SMSS Add In hoạt động với tôi trong năm 2008. Data Scripter Add In không.
Phil Hale

5
Trong năm 2008 R2, có thể tìm thấy tùy chọn "Các loại dữ liệu thành tập lệnh" trên màn hình "Đặt tùy chọn tập lệnh". Nhấn nút "Nâng cao" ở đó.
raymi

3
Những addins này có hoạt động trong 2008 R2 không? SSMS Addin đang đưa ra một ngoại lệ khi tải.
vui vẻ

2
Hãy xem câu trả lời @ruffin dưới đây để biết thêm ảnh chụp màn hình
Keith Sirmons

117

Vì lợi ích của việc mất trí quá rõ ràng, sau khi làm theo hướng dẫn của marc_s 'tại đây ...

Trong SSMS trong Object Explorer, nhấp chuột phải vào cơ sở dữ liệu, nhấp chuột phải và chọn "Nhiệm vụ" và sau đó "Tạo tập lệnh".

... Sau đó, tôi thấy một màn hình trình hướng dẫn với " Giới thiệu, Chọn đối tượng, Đặt tùy chọn tập lệnh, Tóm tắt và Lưu hoặc Xuất bản tập lệnh " với các nút trước, tiếp theo, kết thúc, hủy ở phía dưới.

Trên bước Đặt tùy chọn tập lệnh , bạn phải bấm "Nâng cao" để nhận trang có các tùy chọn. Sau đó, như Ghlouw đã đề cập, bây giờ bạn chọn "Loại dữ liệu cho tập lệnh" và lợi nhuận.

nút nâng cao CAO CẤP TRONG ĐỎ! 1 !!


13
Cảm ơn, nút này không có vị trí rất trực quan. Tôi cho rằng nó thuộc về "Lưu vào tập tin".
Karel Kral

48

Nếu bạn sử dụng SQLServer 2008R2, bạn cần đặt Loại dữ liệu thành trường tập lệnh.

nhập mô tả hình ảnh ở đây


2
Cũng áp dụng cho năm 2012.
OldCurmudgeon

1
Cũng áp dụng cho năm 2014.
NucS

2
Nếu bạn bối rối như tôi, tùy chọn "Loại dữ liệu thành tập lệnh" chỉ hiển thị trong tùy chọn "Nâng cao" của trình hướng dẫn "Tạo tập lệnh ..." - bạn không tìm thấy nó trong hộp thoại tùy chọn chính!
Etherman

36

Nếu bạn đang chạy SQL Server 2008 R2, các tùy chọn tích hợp sẵn để thực hiện điều này trong SSMS như marc_s được mô tả ở trên đã thay đổi một chút. Thay vì chọn Script data = truenhư thể hiện trong sơ đồ của mình, giờ đây có một tùy chọn mới được gọi "Types of data to script"ngay phía trên nhóm "Tùy chọn bảng / Chế độ xem". Tại đây bạn chỉ có thể chọn dữ liệu tập lệnh, lược đồ và dữ liệu hoặc lược đồ. Hoạt động như một lá bùa.



6

Đối với những người tìm kiếm một phiên bản dòng lệnh, Microsoft đã phát hànhmssql-scripter để làm điều này:

$ 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

Dường như mssql-scripter là một dự án đã chết.
Alex Suzuki

Đúng, không có sự phát triển nào xảy ra trong năm ngoái, nhưng nó hoạt động tốt với tôi.
Nickolay

3

Chỉ cần cập nhật ảnh chụp màn hình để giúp đỡ người khác khi tôi đang sử dụng phiên bản v18 mới hơn, vào khoảng năm 2019.

Nhấp chuột phải vào DB: Nhiệm vụ> Tạo tập lệnh

Tại đây bạn có thể chọn một số bảng nhất định hoặc đi với mặc định của tất cả.

Tại đây bạn có thể chọn một số bảng nhất định hoặc đi với mặc định của tất cả. Đối với nhu cầu của riêng tôi, tôi chỉ chỉ một bảng.

Tiếp theo, có "Tùy chọn tập lệnh" nơi bạn có thể chọn tệp đầu ra, v.v. Như trong nhiều câu trả lời ở trên (một lần nữa, tôi chỉ phủ nhận các câu trả lời cũ cho Studio Server quản lý SQL v18.4 mới hơn) mà chúng tôi thực sự muốn nằm dưới nút "Nâng cao". Đối với mục đích riêng của tôi, tôi chỉ cần dữ liệu.

Tùy chọn đầu ra chung, bao gồm đầu ra cho tập tin. Tùy chọn nâng cao bao gồm dữ liệu!

Cuối cùng, có một bản tóm tắt đánh giá trước khi thực hiện. Sau khi thực hiện một báo cáo về tình trạng hoạt động được hiển thị. Đánh giá tóm tắt.


2

Bạn cũng có thể kiểm tra "Bổ trợ Scripter dữ liệu" cho SQL Server Management Studio 2008 từ:

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


Danh sách tính năng của họ:

  • Nó được phát triển trên SSMS 2008 và không được hỗ trợ trên phiên bản 2005 tại thời điểm này (sớm!)

  • Xuất dữ liệu nhanh chóng sang T-SQL cho cú pháp MSSQL và MySQL

  • CSV, TXT, XML cũng được hỗ trợ! Khai thác toàn bộ tiềm năng, sức mạnh và tốc độ mà SQL cung cấp.

  • Đừng đợi Access hoặc Excel thực hiện công việc viết kịch bản cho bạn mà có thể mất vài phút để thực hiện - hãy để SQL Server làm điều đó cho bạn và loại bỏ tất cả các công việc đoán ra khi xuất dữ liệu của bạn!

  • Tùy chỉnh đầu ra dữ liệu của bạn để sao lưu nhanh chóng, thao tác DDL và hơn thế nữa ...

  • Thay đổi tên bảng và lược đồ cơ sở dữ liệu theo nhu cầu của bạn, nhanh chóng và hiệu quả

  • Xuất tên cột hoặc đơn giản là tạo dữ liệu mà không cần tên.

  • Bạn có thể chọn các cột riêng lẻ để kịch bản.

  • Bạn có thể chọn các tập hợp con của dữ liệu (mệnh đề WHERE).

  • Bạn có thể chọn thứ tự dữ liệu (mệnh đề ORDER BY).

  • Tiện ích sao lưu tuyệt vời cho các hoạt động gỡ lỗi cơ sở dữ liệu grungy yêu cầu thao tác dữ liệu. Đừng để mất dữ liệu trong khi thử nghiệm. Thao tác dữ liệu trên bay!


2

Tất cả các bên trên là tốt đẹp, nhưng nếu bạn cần

  1. Xuất dữ liệu từ nhiều chế độ xem và bảng có liên kết
  2. Tạo các câu lệnh chèn cho các RDBMS khác nhau
  3. Di chuyển dữ liệu từ bất kỳ RDBMS sang bất kỳ RDBMS nào

Sau đó, mẹo sau đây là cách duy nhất.

Trước tiên hãy tìm hiểu cách tạo tệp spool hoặc xuất tập kết quả từ máy khách dòng lệnh db nguồn. Thứ hai tìm hiểu cách thực hiện các câu lệnh sql trên db đích.

Cuối cùng, tạo các câu lệnh chèn (và bất kỳ câu lệnh nào khác) cho cơ sở dữ liệu đích bằng cách chạy tập lệnh sql trên cơ sở dữ liệu nguồn. ví dụ

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;

Ví dụ trên được tạo cho db của Oracle trong đó việc sử dụng kép là cần thiết cho các lựa chọn không có bảng.

Tập kết quả sẽ chứa tập lệnh cho db đích.


1

Dưới đây là một ví dụ về việc tạo tập lệnh di chuyển dữ liệu bằng cách sử dụng một con trỏ để lặp lại bảng nguồn.

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

Sau khi tìm kiếm rất nhiều, đó là bức ảnh đẹp nhất của tôi:

Nếu bạn có nhiều dữ liệu và cần một tập lệnh nhỏ gọn và thanh lịch, hãy thử: Gói công cụ SSMS

Nó tạo ra một liên kết tất cả các câu lệnh chọn để chèn các mục vào bảng mục tiêu và xử lý các giao dịch khá tốt.

Ảnh chụp màn hình

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.