Mengekspor data dalam SQL Server sebagai INSERT INTO

413

Saya menggunakan SQL Server 2008 Management Studio dan punya meja saya ingin bermigrasi ke server db yang berbeda.

Apakah ada opsi untuk mengekspor data sebagai sisipan ke skrip SQL ??

Jack Kada
sumber

Jawaban:

682

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

teks alternatif

2008 R2 atau lebih baru mis. 2012

Pilih "Jenis Data untuk Skrip" yang bisa "Hanya Data", "Skema dan Data" atau "Skema Saja" - default).

masukkan deskripsi gambar di sini

Dan kemudian ada Paket " SSMS Addin " pada Codeplex (termasuk sumber) yang menjanjikan fungsionalitas yang sama dan beberapa lainnya (seperti pencarian cepat dll.)

teks alternatif

marc_s
sumber
Saya baru saja menginstal addin dari Codeplex. Bagus. Terimakasih atas infonya.
Rob Garrison
1
Add In SMSS berfungsi untuk saya pada tahun 2008. Add In Scripter Data tidak.
Phil Hale
5
Pada 2008 R2, opsi "Jenis data ke skrip" dapat ditemukan di layar "Set Scripting Options". Tekan tombol "Advanced" di sana.
raymi
3
Apakah addins ini berfungsi pada 2008 R2? SSMS Addin melempar pengecualian.
jocull
2
Lihatlah jawaban @ruffin di bawah ini untuk tangkapan layar lebih banyak
Keith Sirmons
117

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.

tombol lanjutan SOROTAN MERAH! 1 !!

ruffin
sumber
13
Terima kasih, tombol ini tidak memiliki penempatan yang sangat intuitif. Saya kira itu milik "Simpan ke file".
Karel Kral
48

Jika Anda menggunakannya SQLServer 2008R2 Anda perlu mengatur Jenis data ke bidang skrip.

masukkan deskripsi gambar di sini

Azadeh Khojandi
sumber
2
Juga berlaku untuk 2012.
OldCurmudgeon
1
Juga berlaku untuk 2014.
NucS
2
Jika Anda bingung seperti saya, opsi "Jenis data ke skrip" hanya terlihat di opsi "Tingkat lanjut" pada skrip "Buat Skrip ..." - Anda tidak menemukannya di dialog opsi utama!
Etherman
36

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 = trueseperti 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.

Ghlouw
sumber
7

untuk SQl server Mng Studio 2016:

masukkan deskripsi gambar di sini

ingconti
sumber
6

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
Nickolay
sumber
Tampaknya mssql-scripter adalah proyek mati sekarang.
Alex Suzuki
Benar, tidak ada perkembangan yang terjadi pada tahun lalu, tetapi itu bekerja dengan baik untuk saya.
Nickolay
3

Hanya memperbarui tangkapan layar untuk membantu orang lain karena saya menggunakan v18 yang lebih baru, sekitar tahun 2019.

Klik kanan DB: Tugas> Hasilkan Script

Di sini Anda dapat memilih tabel tertentu atau pergi dengan default semua.

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.

Opsi keluaran umum, termasuk keluaran ke file. Opsi lanjutan termasuk data!

Akhirnya, ada ringkasan ulasan sebelum eksekusi. Setelah mengeksekusi laporan status operasi ditampilkan. Rangkuman ulasan.

Neil Guy Lindberg
sumber
2

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!

Nate
sumber
2

Semua hal di atas bagus, tetapi jika Anda perlu

  1. Mengekspor data dari beberapa tampilan dan tabel dengan gabungan
  2. Buat pernyataan penyisipan untuk RDBMS yang berbeda
  3. Migrasikan data dari RDBMS ke RDBMS apa pun

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.

Αλέκος
sumber
1

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'
Shane
sumber
0

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.

Tangkapan layar

Vinicius Gonçalves
sumber