Saya memiliki tabel ABC di database DB. Saya ingin membuat salinan ABC dengan nama ABC_1, ABC_2, ABC_3 di DB yang sama. Bagaimana saya bisa melakukannya menggunakan kueri Studio Manajemen (lebih disukai) atau SQL?
Ini untuk SQL Server 2008 R2.
Saya memiliki tabel ABC di database DB. Saya ingin membuat salinan ABC dengan nama ABC_1, ABC_2, ABC_3 di DB yang sama. Bagaimana saya bisa melakukannya menggunakan kueri Studio Manajemen (lebih disukai) atau SQL?
Ini untuk SQL Server 2008 R2.
Jawaban:
Penggunaan SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
Ini akan membuat tabel baru ABC_1
yang memiliki struktur kolom yang sama ABC
dan berisi data yang sama. Kendala (misalnya kunci, nilai default), bagaimanapun, tidak-disalin.
Anda dapat menjalankan kueri ini beberapa kali dengan nama tabel yang berbeda setiap kali.
Jika Anda tidak perlu menyalin data, hanya untuk membuat tabel kosong baru dengan struktur kolom yang sama, tambahkan WHERE
klausa dengan ekspresi salah:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *
lebih bersih daripada WHERE
metode pernyataan selalu-salah
Di SSMS, perluas database Anda di Object Explorer , buka Tables , klik kanan pada tabel yang Anda minati dan pilih Script Table As , Create To , New Query Editor Window . Lakukan pencarian dan ganti ( CTRL + H ) untuk mengubah nama tabel (misalnya, masukkan ABC
ke kolom Find What dan ABC_1
di kolom Replace With lalu klik OK ).
Jawaban lain yang menunjukkan cara melakukan ini dengan SQL juga berfungsi dengan baik, tetapi perbedaan dengan metode ini adalah Anda juga akan mendapatkan indeks, batasan, dan pemicu.
Jika Anda ingin memasukkan data, setelah membuat tabel ini jalankan skrip di bawah ini untuk menyalin semua data dari ABC (dengan tetap menggunakan nilai ID yang sama jika Anda memiliki field identitas):
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
IDENTITY_INSERT
ke ON untuk mengizinkan mengatur kolom identitas "secara manual", Anda mencampur urutan dalam contoh Anda. Juga, Anda harus MENJELASKAN daftar kolom Anda
Jika Anda ingin menduplikasi tabel dengan semua batasan & kuncinya, ikuti langkah-langkah di bawah ini:
Kemudian untuk menyalin data, jalankan skrip di bawah ini:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
Ini adalah opsi lain:
select top 0 * into <new_table> from <original_table>