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;


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow