Yanıtlar:
İnsert deyiminin aslında bunu yapmak için bir sözdizimi vardır. Ancak "*" seçmek yerine sütun adlarını belirtirseniz çok daha kolaydır:
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Bunu açıklığa kavuştursam iyi olur çünkü bir nedenden dolayı bu gönderi birkaç olumsuz oy alıyor.
INSERT INTO ... SELECT FROM sözdizimi, içine eklediğiniz tablonun (yukarıdaki örneğimde "yeni_tablo") zaten mevcut olduğu durum içindir. Başkalarının da söylediği gibi, SELECT ... INTO sözdizimi, komutun bir parçası olarak yeni tabloyu oluşturmak istediğiniz zamanlar içindir.
Yeni tablonun komutun bir parçası olarak yaratılması gerekip gerekmediğini belirtmediniz, bu nedenle INSERT INTO ... SELECT FROM, hedef tablonuz zaten mevcutsa iyi olacaktır.
Aşağıdaki gibi bir Alt sorgu kullanarak ekleyebilirsiniz:
INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value
Buradan :
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
Bir select into
ifade kullanabilirsiniz . W3Schools'ta daha fazlasını görün .
Herhangi bir kod yazmak zorunda olmadığınız daha kolay bir yol var (Test İçin İdeal veya Tek seferlik güncellemeler):
Aşama 1
Adım 2
Aşama 3
4. adım
Adım 5
Not - 1 : Sütunlar Hedef tablodaki gibi doğru sırada değilse, her zaman Adım 2'yi takip edebilir ve Hedef tablodakiyle aynı sırayla Sütunları Seçebilirsiniz.
Not - 2 - Kimlik sütunlarınız varsa, SET IDENTITY_INSERT sometableWithIdentity ON
aşağıdaki adımları uygulayın ve ardından yukarıdaki adımları izleyin ve sonundaSET IDENTITY_INSERT sometableWithIdentity OFF
Çok fazla veriyi kalıcı olarak aktarıyorsanız, yani geçici bir tablo doldurmuyorsanız, SQL Server Verileri Alma / Verme'yi kullanmanızı tavsiye ederim. tablodan tabloya eşlemeler için .
İçe / Dışa Aktarma aracı, eşlemenizde tür dönüşümleriniz ve olası değer kesmeleriniz olduğunda genellikle düz SQL'den daha iyidir. Genel olarak, eşlemeniz ne kadar karmaşıksa, doğrudan SQL yerine Entegrasyon Hizmetleri (SSIS) gibi bir ETL aracı kullanırsınız.
Alma / Verme aracı aslında bir SSIS sihirbazıdır ve çalışmanızı bir dtsx paketi olarak kaydedebilirsiniz.
Sanırım bu ifade istediğinizi yapabilir.
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")