Jawaban:
Dalam SSMS di Object Explorer, klik kanan pada database, klik kanan dan pilih "Tugas" dan kemudian "Hasilkan Script".
Ini akan memungkinkan Anda untuk menghasilkan skrip untuk satu atau semua tabel, dan salah satu opsi adalah "Data Skrip". Jika Anda mengaturnya ke TRUE, wizard akan menghasilkan skrip dengan pernyataan INSERT INTO () untuk data Anda.
Jika menggunakan 2008 R2 atau 2012 itu disebut sesuatu yang lain, lihat tangkapan layar di bawah ini
Pilih "Jenis Data untuk Skrip" yang bisa "Hanya Data", "Skema dan Data" atau "Skema Saja" - default).
Dan kemudian ada Paket " SSMS Addin " pada Codeplex (termasuk sumber) yang menjanjikan fungsionalitas yang sama dan beberapa lainnya (seperti pencarian cepat dll.)
Demi kepunahan yang terlalu eksplisit, setelah mengikuti instruksi marc_s di sini ...
Dalam SSMS di Object Explorer, klik kanan pada database klik kanan dan pilih "Tugas" dan kemudian "Hasilkan Script".
... Saya kemudian melihat layar wizard dengan " Pendahuluan, Pilih Objek, Tetapkan Opsi Scripting, Ringkasan, dan Simpan atau Publikasikan Skrip " dengan prev, next, finish, cancel buttons di bagian bawah.
Pada langkah Set Scripting Options , Anda harus mengklik "Advanced" untuk mendapatkan halaman dengan opsi. Kemudian, seperti yang disebutkan Ghlouw , Anda sekarang memilih "Jenis data untuk skrip" dan keuntungan.
Jika Anda menggunakannya SQLServer 2008R2 Anda perlu mengatur Jenis data ke bidang skrip.
Jika Anda menjalankan SQL Server 2008 R2, opsi bawaan untuk melakukan ini dalam SSMS karena marc_s yang dijelaskan di atas sedikit berubah. Alih-alih memilih Script data = true
seperti yang ditunjukkan pada diagram-nya, sekarang ada opsi baru yang disebut "Types of data to script"
tepat di atas pengelompokan "Table / View Options". Di sini Anda dapat memilih hanya data skrip, skema dan data atau skema saja. Bekerja seperti pesona.
Bagi mereka yang mencari versi baris perintah, Microsoft merilismssql-scripter
untuk melakukan ini:
$ 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
Hanya memperbarui tangkapan layar untuk membantu orang lain karena saya menggunakan v18 yang lebih baru, sekitar tahun 2019.
Di sini Anda dapat memilih tabel tertentu atau pergi dengan default semua. Untuk kebutuhan saya sendiri, saya hanya menunjukkan satu tabel.
Selanjutnya, ada "Opsi Scripting" di mana Anda dapat memilih file output, dll. Seperti dalam beberapa jawaban di atas (sekali lagi, saya hanya membersihkan jawaban lama untuk yang lebih baru, v18.4 SQL Server Management Studio) yang benar-benar kami inginkan berada di bawah tombol "Advanced". Untuk keperluan saya sendiri, saya hanya perlu data.
Akhirnya, ada ringkasan ulasan sebelum eksekusi. Setelah mengeksekusi laporan status operasi ditampilkan.
Anda juga bisa melihat "Data Scripter Add-In" untuk SQL Server Management Studio 2008 dari:
http://www.mssql-vehicle-data.com/SSMS
Daftar fitur mereka:
Ini dikembangkan pada SSMS 2008 dan tidak didukung pada versi 2005 saat ini (segera!)
Ekspor data dengan cepat ke T-SQL untuk sintaksis MSSQL dan MySQL
CSV, TXT, XML juga didukung! Memanfaatkan potensi penuh, kekuatan, dan kecepatan yang ditawarkan SQL.
Jangan menunggu Access atau Excel melakukan pekerjaan scripting untuk Anda yang bisa memakan waktu beberapa menit - biarkan SQL Server melakukannya untuk Anda dan hilangkan semua dugaan dari mengekspor data Anda!
Kustomisasi output data Anda untuk backup cepat, manipulasi DDL, dan banyak lagi ...
Ubah nama tabel dan skema database sesuai kebutuhan Anda, dengan cepat dan efisien
Ekspor nama kolom atau hanya menghasilkan data tanpa nama.
Anda dapat memilih masing-masing kolom untuk skrip.
Anda dapat memilih sub-set data (klausa WHERE).
Anda dapat memilih pemesanan data (klausa ORDER BY).
Utilitas cadangan yang hebat untuk operasi debugging basis data yang kotor yang memerlukan manipulasi data. Jangan kehilangan data saat bereksperimen. Memanipulasi data dengan cepat!
Semua hal di atas bagus, tetapi jika Anda perlu
maka trik berikut adalah satu-satunya cara.
Pertama-tama pelajari cara membuat file spool atau set hasil ekspor dari klien baris perintah sumber db. Kedua pelajari cara mengeksekusi pernyataan sql pada db tujuan.
Terakhir, buat pernyataan penyisipan (dan pernyataan lainnya) untuk database tujuan dengan menjalankan skrip sql pada database sumber. misalnya
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;
Contoh di atas dibuat untuk Oracle db di mana penggunaan dual diperlukan untuk pemilihan tabel-kurang.
Set hasil akan berisi skrip untuk tujuan db.
Berikut adalah contoh membuat skrip migrasi data menggunakan kursor untuk mengulangi tabel sumber.
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'
Setelah banyak mencari, itu adalah bidikan terbaik saya:
Jika Anda memiliki banyak data dan membutuhkan skrip yang ringkas dan elegan, cobalah: SSMS Tools Pack
Ini menghasilkan gabungan semua pernyataan pilih untuk memasukkan item ke tabel target dan menangani transaksi dengan cukup baik.