Kami sedang menulis aplikasi baru, dan saat pengujian, kami akan membutuhkan banyak data dummy. Saya telah menambahkan data itu dengan menggunakan MS Access untuk membuang file excel ke dalam tabel yang relevan.
Seringkali, kami ingin "me-refresh" tabel yang relevan, yang berarti menjatuhkan semuanya, menciptakan kembali, dan menjalankan kueri penambahan append MS Access yang disimpan.
Bagian pertama (menjatuhkan & menciptakan kembali) adalah skrip sql yang mudah, tetapi bagian terakhir membuat saya merasa ngeri. Saya ingin skrip pengaturan tunggal yang memiliki banyak INSERT untuk membuat ulang data dummy.
Saya memiliki data di tabel sekarang. Apa cara terbaik untuk secara otomatis menghasilkan daftar besar pernyataan INSERT dari dataset itu?
Satu-satunya cara saya bisa memikirkan untuk melakukannya adalah dengan menyimpan tabel ke lembar excel dan kemudian menulis formula excel untuk membuat INSERT untuk setiap baris, yang tentunya bukan cara terbaik.
Saya menggunakan Studio Manajemen 2008 untuk terhubung ke database SQL Server 2005.
sumber
Jawaban:
Microsoft harus mengiklankan fungsionalitas SSMS 2008. Fitur yang Anda cari dibangun ke dalam utilitas Generate Script , tetapi fungsionalitasnya dimatikan secara default dan harus diaktifkan ketika membuat skrip tabel.
Ini adalah langkah cepat untuk menghasilkan
INSERT
pernyataan untuk semua data di tabel Anda, tidak menggunakan skrip atau add-in untuk SQL Management Studio 2008:Anda kemudian akan mendapatkan
CREATE TABLE
pernyataan dan semuaINSERT
pernyataan untuk data langsung dari SSMS.sumber
Data only
dan menemuiCyclic dependencies found
kesalahan, alihkan keSchema and data
untuk menghindari kesalahan. Terjadi di Studio Manajemen v17.Kami menggunakan prosedur tersimpan ini - ini memungkinkan Anda untuk menargetkan tabel tertentu, dan menggunakan klausa mana. Anda dapat menemukan teks di sini .
Misalnya, ini memungkinkan Anda melakukan ini:
Kode sumber disalin dari tautan:
sumber
Seperti disebutkan oleh @Mike Ritacco tetapi diperbarui untuk SSMS 2008 R2
Anda kemudian akan mendapatkan semua pernyataan INSERT untuk data langsung dari SSMS.
EDIT 2016-10-25 SQL Server 2016 / SSMS 13.0.15900.1
Klik kanan pada nama basis data
Pilih Tugas> Hasilkan skrip
Tergantung pada pengaturan Anda, halaman intro dapat ditampilkan atau tidak
Pilih 'Pilih objek basis data tertentu',
Perluas tampilan hierarki dan periksa tabel yang relevan
Klik Selanjutnya
Klik Tingkat Lanjut
Di bawah bagian Umum, pilih opsi yang sesuai untuk 'Jenis data ke skrip'
Klik OK
Pilih apakah Anda ingin output pergi ke permintaan baru, clipboard atau file
Klik Berikutnya dua kali
Script Anda disiapkan sesuai dengan pengaturan yang Anda pilih di atas
Klik Selesai
sumber
Ini dapat dilakukan dengan menggunakan
Visual Studio
juga (setidaknya dalam versi 2013 dan seterusnya).Dalam VS 2013 juga dimungkinkan untuk memfilter daftar baris yang menjadi dasar pernyataan insert, ini adalah sesuatu yang tidak mungkin dalam SSMS seperti yang saya tahu.
Lakukan langkah-langkah berikut:
Ini akan membuat pernyataan penyisipan (bersyarat) untuk tabel yang dipilih ke jendela atau file yang aktif.
Tombol "Filter" dan "Script" Visual Studio 2013 :
sumber
Anda dapat menggunakan SSMS Tools Pack (tersedia untuk SQL Server 2005 dan 2008). Itu datang dengan fitur untuk menghasilkan pernyataan insert.
http://www.ssmstoolspack.com/
sumber
Saya menggunakan SSMS 2008 versi 10.0.5500.0. Dalam versi ini sebagai bagian dari panduan Generate Scripts, alih-alih tombol Advanced, ada layar di bawah ini. Dalam hal ini, saya hanya ingin data yang dimasukkan dan tidak ada pernyataan, jadi saya harus mengubah dua properti yang dilingkari
sumber
Prosedur tersimpan Jane Dallaway: http://docs.google.com/leaf?id=0B_AkC4ZdTI9tNWVmZWU3NzAtMWY1My00NjgwLWI3ZjQtMTY1NDMxYzBhYzgx&hl=en_GB . Dokumentasi adalah serangkaian posting blog: https://www.google.com/search?q=spu_generateinsert&as_sitesearch=http%3A%2F%2Fjane.dallaway.com
sumber
Jika Anda memerlukan akses terprogram, maka Anda dapat menggunakan prosedur tersimpan open source `GenerateInsert.
INSERT generator pernyataan
Sama seperti contoh sederhana dan cepat, untuk menghasilkan pernyataan INSERT untuk tabel,
AdventureWorks.Person.AddressType
jalankan pernyataan berikut:Ini akan menghasilkan skrip berikut:
sumber
Tautan pertama ke sp_generate_inserts cukup keren, ini adalah versi yang sangat sederhana:
Di sistem saya, saya mendapatkan hasil ini:
sumber
Kontribusi saya untuk masalah ini, generator skrip Powershell INSERT yang memungkinkan Anda skrip beberapa tabel tanpa harus menggunakan GUI SSMS yang rumit. Sangat bagus untuk data "seed" yang bertahan cepat ke dalam kontrol sumber.
Secara default, skrip INSERT yang dihasilkan adalah "SeedData.sql" di bawah folder yang sama dengan skrip.
Anda akan memerlukan rakitan objek manajemen SQL Server diinstal, yang harus ada jika Anda memiliki SSMS diinstal.
sumber
Jangan gunakan sisipan, gunakan BCP
sumber
Mungkin Anda dapat mencoba Wisaya Penerbitan SQL Server http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Ini memiliki wizard yang membantu Anda memasukkan pernyataan skrip.
sumber
GenerateData adalah alat yang luar biasa untuk ini. Ini juga sangat mudah untuk membuat tweak karena kode sumber tersedia untuk Anda. Beberapa fitur bagus:
sumber
Saya menggunakan skrip ini yang telah saya tempatkan di blog saya ( Bagaimana cara menghasilkan prosedur pernyataan Insert di sql server ).
Sejauh ini telah bekerja untuk saya, meskipun mereka mungkin bug yang belum saya temukan.
sumber
Saya menggunakan sqlite untuk melakukan ini. Saya merasa sangat, sangat berguna untuk membuat database awal / tes.
sqlite3 foo.sqlite .dump > foo_as_a_bunch_of_inserts.sql
sumber
Apakah Anda memiliki data dalam basis data produksi? Jika demikian, Anda dapat menyiapkan refresh periode data melalui DTS. Kami melakukannya setiap minggu di akhir pekan dan sangat menyenangkan memiliki data yang bersih dan nyata setiap minggu untuk pengujian kami.
Jika Anda belum memiliki produksi, maka Anda harus membuat database yang mereka inginkan Anda inginkan (segar). Kemudian, duplikat basis data itu dan gunakan basis data yang baru dibuat itu sebagai lingkungan pengujian Anda. Saat Anda menginginkan versi bersih, cukup duplikat versi bersih Anda lagi dan Bob adalah paman Anda .
sumber
Jika Anda lebih suka menggunakan Google Sheets, gunakan SeekWell untuk Kirim tabel ke Sheet, kemudian masukkan baris pada jadwal, karena mereka ditambahkan ke Sheet.
Lihat sini untuk proses langkah demi langkah, atau tonton video demo fitur di sini.
sumber
Ada banyak skrip yang bagus di atas untuk menghasilkan pernyataan penyisipan, tetapi saya mencoba salah satu dari saya sendiri untuk menjadikannya sebagai ramah pengguna mungkin dan juga untuk dapat melakukan pernyataan UPDATE. + kemas hasilnya siap untuk file .sql yang dapat disimpan berdasarkan tanggal.
Dibutuhkan sebagai input pernyataan SELECT normal Anda dengan klausa WHERE, kemudian mengeluarkan daftar Sisipkan pernyataan dan perbarui pernyataan. Bersama-sama mereka membentuk semacam JIKA TIDAK ADA () INSERT ELSE UPDATE. Berguna juga ketika ada kolom yang tidak dapat diupdate yang membutuhkan pengecualian dari pernyataan INSERT / UPDATE akhir.
Hal lain yang dapat dilakukan skrip di bawah ini adalah: skrip bahkan dapat menangani INNER GABUNG dengan tabel lain sebagai pernyataan input untuk proc yang disimpan. Ini bisa berguna sebagai alat manajemen rilis orang miskin yang berada tepat di ujung jari Anda di mana Anda mengetik pernyataan SELECT sql sepanjang hari.
posting asli: Hasilkan pernyataan UPDATE di SQL Server untuk tabel tertentu
sumber
mengapa tidak hanya mencadangkan data sebelum pekerjaan Anda dengannya, lalu pulihkan saat Anda ingin di-refresh?
jika Anda harus membuat sisipan, coba: http://vyaskn.tripod.com/code.htm#inserts
sumber
Tidak yakin, jika saya memahami pertanyaan Anda dengan benar.
Jika Anda memiliki data di MS-Access, yang ingin Anda pindahkan ke SQL Server - Anda bisa menggunakan DTS.
Dan, saya kira Anda bisa menggunakan profiler SQL untuk melihat semua pernyataan INSERT yang lewat, saya kira.
sumber
Saya juga telah meneliti banyak tentang ini, tetapi saya tidak bisa mendapatkan solusi konkret untuk ini. Saat ini pendekatan yang saya ikuti adalah menyalin konten dalam excel dari studio SQL Server Managment dan kemudian mengimpor data ke Oracle-TOAD dan kemudian menghasilkan pernyataan insert
sumber
Anda dapat menghasilkan pernyataan INSERT atau MERGE dengan aplikasi sederhana dan gratis ini yang saya tulis beberapa tahun yang lalu:
Data Script Writer (Aplikasi Desktop untuk Windows)
Juga, saya menulis posting blog tentang alat-alat ini baru-baru ini dan pendekatan untuk meningkatkan SSDT untuk database penyebaran dengan data. Cari tahu lebih lanjut:
Script dan gunakan data untuk database dari proyek SSDT
sumber
Saya membuat utilitas sederhana untuk digunakan, harap Anda menikmati.
Jika pernyataan INSERT yang dihasilkan sedang dipotong, memeriksa panjang batas teks hasil pada Options Manajemen Studio:
Tools > Options
,Query Results > SQL Server > Results to Grid
, "Data Non XML" nilai di bawah "Karakter maksimum Diperoleh".sumber