Kopier en tabel i SQL

Kopier En Tabel I Sql



Mens på overfladen, kan dataduplikeringen virke ineffektiv; det kan nogle gange spille en meget afgørende rolle i tilfælde, hvor du skal have en næsten nøjagtig kopi af den samme tabel.

I SQL kan vi bruge forskellige metoder og teknikker til at kopiere en eksisterende tabel og få den nye tabel under et nyt navn, men med de samme data. Dette kan være meget nyttigt i visse opgaver såsom sikkerhedskopier, datatransformation, midlertidige dataændringer uden at påvirke hovedtabellen og mere.







I denne guide vil vi udforske disse metoder og lære, hvordan vi kan kopiere en tabel i SQL-databaser. På grund af forskellene på, hvordan de forskellige SQL-databasemotorer håndterer tabelkopieringen, vil vi ikke dække alle metoderne for hver database.



Vi vil forsøge at dække mindst én for hver databasemotor, når den understøttes, for at vise dig, hvordan du kan kopiere en tabel for hver af dine understøttede databasemotorer.



Metode 1: Global (ved hjælp af CREATE TABLE-erklæringen)

Den mest almindelige og forenklede metode til at kopiere en tabel er at bruge CREATE TABLE-sætningen.





I modsætning til en normal CREATE TABLE-sætning sender vi en SELECT-sætning, der indeholder strukturen og dataene i kildetabellen.

Syntaksen er som følger:



OPRET TABEL ny_tabel AS
VÆLG * FRA kildetabel;

Dette giver os mulighed for at oprette en ny tabel med det angivne navn fra kildetabellen.

Tag for eksempel Sakila-eksempeldatabasen. Antag, at vi ønsker at oprette en lignende tabel som lejetabellen.

Vi kan bruge den tidligere teknik som vist i følgende eksempelforespørgsel:

OPRET TABEL rental_copy AS
VÆLG * FRA udlejning;

Dette skulle skabe en ny tabel kaldet 'rental_copy', der indeholder samme struktur og data som lejetabellen.

Du kan verificere ved at vælge dataene fra tabellen som følger:

VÆLG * FRA udlejningskopi;

Dette bør indeholde de nøjagtige data som lejetabellen.

Metode 2: Global (ved hjælp af INSERT INTO-erklæringen)

En anden metode, der er globalt understøttet af en bred vifte af SQL-databaser, er at bruge INSERT INTO-sætningen.

Denne teknik giver os mulighed for at kopiere fra en tabel til en anden. I modsætning til CREATE TABLE og SELECT giver denne metode os mulighed for selektivt at hente dataene.

Dette er praktisk, når vi har brug for mere kontrol i kopieringsprocessen. Vi kan bruge syntaksen som vist i følgende:

INSERT INTO target_table ( kolonne 1, kolonne 2, ... )
VÆLG kolonne1, kolonne2, ...
FRA kildetabel;

I dette tilfælde kan vi angive de kolonner, som vi ønsker at inkludere i den nye tabel uden egentlig at hente alt fra den oprindelige tabel.

Tag for eksempel følgende forespørgsel:

INDSÆT
IND I
leje_kopi ( leje_id,
leje_dato,
Retur dato )
VÆLG
leje_id,
leje_dato,
Retur dato
FRA
leje r;

En ulempe ved denne metode er, at det kan kræve, at du opretter en lignende tabel med de kolonner, du ønsker at inkludere. Dette kan være gentagne og effektivt, når du arbejder med et stort datasæt.

Metode 3: Kopier tabelstrukturen

I andre tilfælde kan du støde på tilfælde, hvor du er interesseret i tabelstrukturen uden at have brug for de data, der er gemt i tabellen.

I et sådant scenario kan du bruge CREATE TABLE-sætningen sammen med LIKE-sætningen som følger:

OPRET TABEL ny_tabel ( LIKE kildetabel ) ;

Dette skulle oprette en ny tabel med det angivne navn og lignende struktur som 'kildetabellen' uden faktisk at kopiere dataene.

Kopiering af tabeller mellem databaser

For at kopiere tabellerne mellem forskellige databaser kan vi eksportere dataene fra kildedatabasen og importere dem til måldatabasen.

Dette involverer typisk brug af filbaserede formater som CSV eller databasespecifikke værktøjer. Du kan henvise til dokumentationen til din database om, hvordan du opnår dette, da det kan variere afhængigt af databasemotoren.

Metode 4: Brug af de sammenkædede servere (SQL-server)

I SQL Server kan vi kopiere tabellerne mellem databaser ved hjælp af linkede servere.

Sammenkædede servere giver os mulighed for at etablere en forbindelse til en fjerndatabase og forespørge eller overføre data mellem dem.

Syntaksen er som følger:

INDSÆT IND [ LinkedServerName ] . [ Databasenavn ] . [ Skemanavn ] . [ target_table ]
VÆLG * FRA kildetabel;

Dette muliggør fjernforbindelsen og dataoverførsler mellem fjernservere.

Konklusion

I denne øvelse lærte vi at bruge og arbejde med forskellige metoder og teknikker til at kopiere en tabel i SQL.