Microsoft SQL Server
Verplaats en kopieer gegevens rond tabellen
Zoeken…
Kopieer gegevens van de ene tabel naar de andere
Deze code selecteert gegevens uit een tabel en geeft deze weer in de querytool (meestal SSMS)
SELECT Column1, Column2, Column3 FROM MySourceTable;
Deze code voegt die gegevens in een tabel in:
INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;
Kopieer gegevens naar een tabel en maak die tabel meteen
Deze code selecteert gegevens uit een tabel:
SELECT Column1, Column2, Column3 FROM MySourceTable;
Deze code maakt een nieuwe tabel met de naam MyNewTable
en plaatst die gegevens erin
SELECT Column1, Column2, Column3
INTO MyNewTable
FROM MySourceTable;
Gegevens verplaatsen naar een tabel (uitgaande van de methode met unieke sleutels)
Als u gegevens wilt verplaatsen, plaatst u deze eerst in het doel en verwijdert u vervolgens alles wat u uit de brontabel hebt ingevoegd. Dit is geen normale SQL-bewerking, maar het kan verhelderend zijn
Wat heb je ingevoegd? Normaal gesproken moet u in databases een of meer kolommen hebben die u kunt gebruiken om rijen uniek te identificeren, dus we gaan ervan uit en maken er gebruik van.
Deze verklaring selecteert enkele rijen
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
Eerst voegen we deze in onze doeltabel in:
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
Aangenomen dat records in beide tabellen uniek zijn op Key1
, Key2
, kunnen we dat gebruiken om gegevens uit de Key2
te zoeken en te verwijderen
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
Dit werkt alleen correct als Key1
en Key2
uniek zijn in beide tabellen
Ten slotte willen we niet dat de klus voor de helft wordt gedaan. Als we dit in een transactie afronden, worden alle gegevens verplaatst of gebeurt er niets. Dit zorgt ervoor dat we de gegevens niet invoegen en dat we dan niet in staat zijn om de gegevens uit de bron te verwijderen.
BEGIN TRAN;
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
COMMIT TRAN;