Antworten:
Die insert-Anweisung hat tatsächlich eine Syntax dafür. Es ist viel einfacher, wenn Sie die Spaltennamen angeben, anstatt "*" auszuwählen:
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Ich sollte dies besser klarstellen, da dieser Beitrag aus irgendeinem Grund einige Abstimmungen erhält.
Die Syntax INSERT INTO ... SELECT FROM gilt für den Fall, dass die Tabelle, in die Sie einfügen ("new_table" in meinem obigen Beispiel), bereits vorhanden ist. Wie bereits erwähnt, dient die Syntax SELECT ... INTO dazu, wenn Sie die neue Tabelle als Teil des Befehls erstellen möchten.
Sie haben nicht angegeben, ob die neue Tabelle als Teil des Befehls erstellt werden muss. INSERT INTO ... SELECT FROM sollte daher in Ordnung sein, wenn Ihre Zieltabelle bereits vorhanden ist.
Versuche dies:
INSERT INTO newTable SELECT * FROM initial_Table
Sie können mithilfe einer Unterabfrage Folgendes einfügen:
INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value
Von hier aus:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
Sie können eine select into
Anweisung verwenden. Weitere Informationen finden Sie unter W3Schools .
Es gibt eine einfachere Möglichkeit, keinen Code einzugeben (ideal zum Testen oder für einmalige Updates):
Schritt 1
Schritt 2
Schritt 3
Schritt 4
Schritt 5
Hinweis - 1 : Wenn die Spalten nicht in der richtigen Reihenfolge wie in der Zieltabelle vorliegen, können Sie immer Schritt 2 ausführen und die Spalten in derselben Reihenfolge wie in der Zieltabelle auswählen
Hinweis - 2 - Wenn Sie Identitätsspalten haben, führen Sie die SET IDENTITY_INSERT sometableWithIdentity ON
obigen Schritte aus und befolgen Sie sie. Führen Sie sie am Ende ausSET IDENTITY_INSERT sometableWithIdentity OFF
Wenn Sie viele Losdaten dauerhaft übertragen, dh keine temporäre Tabelle füllen, würde ich empfehlen, SQL Server-Import / Export-Daten für Zuordnungen von Tabelle zu Tabelle zu verwenden.
Das Import / Export-Tool ist normalerweise besser als reines SQL, wenn Sie Typkonvertierungen und mögliche Wertkürzungen in Ihrer Zuordnung haben. Je komplexer Ihre Zuordnung ist, desto produktiver ist im Allgemeinen die Verwendung eines ETL-Tools wie Integration Services (SSIS) anstelle von direktem SQL.
Das Import / Export-Tool ist eigentlich ein SSIS-Assistent, und Sie können Ihre Arbeit als dtsx-Paket speichern.
Ich denke, diese Aussage könnte tun, was Sie wollen.
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")