Réponses:
L'instruction insert a en fait une syntaxe pour faire exactement cela. C'est beaucoup plus facile si vous spécifiez les noms de colonnes plutôt que de sélectionner "*":
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Je ferais mieux de clarifier cela parce que pour une raison quelconque, ce message reçoit quelques votes négatifs.
La syntaxe INSERT INTO ... SELECT FROM est utilisée lorsque la table dans laquelle vous insérez ("new_table" dans mon exemple ci-dessus) existe déjà. Comme d'autres l'ont dit, la syntaxe SELECT ... INTO est utilisée lorsque vous souhaitez créer la nouvelle table dans le cadre de la commande.
Vous n'avez pas spécifié si la nouvelle table doit être créée dans le cadre de la commande, donc INSERT INTO ... SELECT FROM devrait convenir si votre table de destination existe déjà.
Essaye ça:
INSERT INTO newTable SELECT * FROM initial_Table
Vous pouvez insérer à l'aide d'une sous-requête comme suit:
INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value
D' ici:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
Vous pouvez utiliser une select into
instruction. En savoir plus sur W3Schools .
Il existe un moyen plus simple de ne pas saisir de code (idéal pour les tests ou les mises à jour ponctuelles):
Étape 1
Étape 2
Étape 3
Étape 4
Étape 5
Remarque - 1 : Si les colonnes ne sont pas dans le bon ordre comme dans le tableau cible, vous pouvez toujours suivre l'étape 2 et sélectionner les colonnes dans le même ordre que dans le tableau cible
Remarque - 2 - Si vous avez des colonnes d'identité, exécutez SET IDENTITY_INSERT sometableWithIdentity ON
puis suivez les étapes ci-dessus et, à la fin, exécutezSET IDENTITY_INSERT sometableWithIdentity OFF
Si vous transférez un grand nombre de données de manière permanente, c'est-à-dire ne remplissez pas une table temporaire, je vous recommande d'utiliser SQL Server Import / Export Data pour les mappages table à table.
L'outil d'importation / exportation est généralement meilleur que SQL simple lorsque vous avez des conversions de type et une troncature de valeur possible dans votre mappage. En général, plus votre mappage est complexe, plus vous utilisez un outil ETL comme Integration Services (SSIS) au lieu de SQL direct.
L'outil d'importation / exportation est en fait un assistant SSIS et vous pouvez enregistrer votre travail en tant que package dtsx.
Je pense que cette déclaration pourrait faire ce que vous voulez.
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")