Jawaban:
Pernyataan insert sebenarnya memiliki sintaks untuk melakukan hal itu. Akan jauh lebih mudah jika Anda menentukan nama kolom daripada memilih "*":
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Saya lebih baik mengklarifikasi ini karena beberapa alasan posting ini mendapatkan beberapa suara turun.
INSERT INTO ... SELECT FROM syntax adalah ketika tabel tempat Anda memasukkan ("new_table" pada contoh saya di atas) sudah ada. Seperti yang orang lain katakan, sintaks SELECT ... INTO adalah ketika Anda ingin membuat tabel baru sebagai bagian dari perintah.
Anda tidak menentukan apakah tabel baru perlu dibuat sebagai bagian dari perintah, jadi INSERT INTO ... SELECT FROM akan baik-baik saja jika tabel tujuan Anda sudah ada.
Coba ini:
INSERT INTO newTable SELECT * FROM initial_Table
Anda dapat menyisipkan menggunakan Sub-permintaan sebagai berikut:
INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value
Dari sini:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
Anda bisa menggunakan select intopernyataan. Lihat lebih banyak di W3Schools .
Ada cara yang lebih mudah di mana Anda tidak perlu mengetikkan kode apa pun (Ideal untuk Pengujian atau pembaruan satu kali):
Langkah 1
Langkah 2
Langkah 3
Langkah 4
Langkah 5
Catatan - 1 : Jika kolom tidak dalam urutan yang benar seperti pada tabel Target, Anda selalu dapat mengikuti Langkah 2, dan Pilih Kolom dalam urutan yang sama seperti pada tabel Target
Catatan - 2 - Jika Anda memiliki kolom Identitas kemudian jalankan SET IDENTITY_INSERT sometableWithIdentity ONdan ikuti langkah-langkah di atas, dan pada akhirnya jalankanSET IDENTITY_INSERT sometableWithIdentity OFF
Jika Anda mentransfer banyak data secara permanen, yaitu tidak mengisi tabel temp, saya akan merekomendasikan menggunakan SQL Server Impor / Ekspor Data untuk pemetaan table-to-table.
Alat Impor / Ekspor biasanya lebih baik daripada SQL langsung ketika Anda memiliki konversi jenis dan kemungkinan pemotongan nilai dalam pemetaan Anda. Secara umum, semakin kompleks pemetaan Anda, semakin produktif Anda menggunakan alat ETL seperti Integration Services (SSIS) daripada SQL langsung.
Alat Impor / Ekspor sebenarnya adalah panduan SSIS, dan Anda dapat menyimpan pekerjaan Anda sebagai paket dtsx.
Saya pikir pernyataan ini mungkin melakukan apa yang Anda inginkan.
INSERT INTO newTableName (SELECT column1, column2, column3 FROM oldTable);
Dim ofd As New OpenFileDialog
ofd.Filter = "*.mdb|*.MDB"
ofd.FilterIndex = (2)
ofd.FileName = "bd1.mdb"
ofd.Title = "SELECCIONE LA BASE DE DATOS ORIGEN (bd1.mdb)"
ofd.ShowDialog()
Dim conexion1 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd.FileName
Dim conn As New OdbcConnection()
conn.ConnectionString = conexion1
conn.Open()
'EN ESTE CODIGO SOLO SE AGREGAN LOS DATOS'
Dim ofd2 As New OpenFileDialog
ofd2.Filter = "*.mdb|*.MDB"
ofd2.FilterIndex = (2)
ofd2.FileName = "bd1.mdb"
ofd2.Title = "SELECCIONE LA BASE DE DATOS DESTINO (bd1.mdb)"
ofd2.ShowDialog()
Dim conexion2 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd2.FileName
Dim conn2 As New OdbcConnection()
conn2.ConnectionString = conexion2
Dim cmd2 As New OdbcCommand
Dim CADENA2 As String
CADENA2 = "INSERT INTO EXISTENCIA IN '" + ofd2.FileName + "' SELECT * FROM EXISTENCIA IN '" + ofd.FileName + "'"
cmd2.CommandText = CADENA2
cmd2.Connection = conn2
conn2.Open()
Dim dA2 As New OdbcDataAdapter
dA2.SelectCommand = cmd2
Dim midataset2 As New DataSet
dA2.Fill(midataset2, "EXISTENCIA")