Αντιγράψτε έναν πίνακα σε SQL

Antigrapste Enan Pinaka Se Sql



Ενώ στην επιφάνεια, η αντιγραφή δεδομένων μπορεί να φαίνεται αναποτελεσματική. Μπορεί μερικές φορές να διαδραματίσει πολύ κρίσιμο ρόλο σε περιπτώσεις όπου χρειάζεται να έχετε σχεδόν ακριβές αντίγραφο του ίδιου πίνακα.

Στην SQL, μπορούμε να χρησιμοποιήσουμε διάφορες μεθόδους και τεχνικές για να αντιγράψουμε έναν υπάρχοντα πίνακα και να έχουμε τον νέο πίνακα με νέο όνομα αλλά με τα ίδια δεδομένα. Αυτό μπορεί να είναι πολύ χρήσιμο σε ορισμένες εργασίες, όπως δημιουργία αντιγράφων ασφαλείας, μετασχηματισμός δεδομένων, προσωρινές αλλαγές δεδομένων χωρίς να επηρεάζεται ο κύριος πίνακας και πολλά άλλα.







Σε αυτόν τον οδηγό, θα εξερευνήσουμε αυτές τις μεθόδους και θα μάθουμε πώς μπορούμε να αντιγράψουμε έναν πίνακα σε βάσεις δεδομένων SQL. Λόγω των διαφορών στον τρόπο με τον οποίο οι διάφορες μηχανές βάσης δεδομένων SQL χειρίζονται την αντιγραφή πίνακα, δεν θα καλύψουμε όλες τις μεθόδους για κάθε βάση δεδομένων.



Θα προσπαθήσουμε να καλύψουμε τουλάχιστον ένα για κάθε μηχανή βάσης δεδομένων, όποτε υποστηρίζεται, για να σας δείξουμε πώς μπορείτε να αντιγράψετε έναν πίνακα για κάθε υποστηριζόμενη μηχανή βάσης δεδομένων σας.



Μέθοδος 1: Καθολική (Χρησιμοποιώντας τη δήλωση CREATE TABLE)

Η πιο συνηθισμένη και απλοϊκή μέθοδος αντιγραφής ενός πίνακα είναι η χρήση της δήλωσης CREATE TABLE.





Σε αντίθεση με μια κανονική πρόταση CREATE TABLE, περνάμε μια πρόταση SELECT που περιέχει τη δομή και τα δεδομένα του πίνακα προέλευσης.

Η σύνταξη έχει ως εξής:



ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ new_table AS
ΕΠΙΛΕΓΩ * FROM source_table;

Αυτό μας επιτρέπει να δημιουργήσουμε έναν νέο πίνακα με το καθορισμένο όνομα από τον πίνακα προέλευσης.

Πάρτε για παράδειγμα τη δειγματοληπτική βάση δεδομένων Sakila. Ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε έναν παρόμοιο πίνακα με τον πίνακα ενοικιάσεων.

Μπορούμε να χρησιμοποιήσουμε την προηγούμενη τεχνική όπως φαίνεται στο ακόλουθο παράδειγμα ερωτήματος:

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ rental_copy AS
ΕΠΙΛΕΓΩ * FROM ενοικίαση·

Αυτό θα πρέπει να δημιουργήσει έναν νέο πίνακα που ονομάζεται 'rental_copy' που θα περιέχει την ίδια δομή και δεδομένα με τον πίνακα ενοικίασης.

Μπορείτε να επαληθεύσετε επιλέγοντας τα δεδομένα από τον πίνακα ως εξής:

ΕΠΙΛΕΓΩ * FROM rental_copy;

Αυτό θα πρέπει να περιέχει τα ακριβή δεδομένα όπως ο πίνακας ενοικίασης.

Μέθοδος 2: Καθολική (Χρησιμοποιώντας τη δήλωση INSERT INTO)

Μια άλλη μέθοδος που υποστηρίζεται παγκοσμίως από μια μεγάλη ποικιλία βάσης δεδομένων SQL είναι η χρήση της πρότασης INSERT INTO.

Αυτή η τεχνική μας επιτρέπει να αντιγράψουμε από έναν πίνακα σε έναν άλλο. Σε αντίθεση με το CREATE TABLE και το SELECT, αυτή η μέθοδος μας επιτρέπει να ανακτούμε επιλεκτικά τα δεδομένα.

Αυτό είναι χρήσιμο όταν χρειαζόμαστε περισσότερο έλεγχο στη διαδικασία αντιγραφής. Μπορούμε να χρησιμοποιήσουμε τη σύνταξη όπως φαίνεται παρακάτω:

INSERT INTO target_table ( στήλη 1, στήλη 2, ... )
ΕΠΙΛΟΓΗ στήλη1, στήλη 2, ...
FROM source_table;

Σε αυτήν την περίπτωση, μπορούμε να καθορίσουμε τις στήλες που επιθυμούμε να συμπεριλάβουμε στον νέο πίνακα χωρίς να λάβουμε πραγματικά τα πάντα από τον αρχικό πίνακα.

Πάρτε για παράδειγμα το ακόλουθο ερώτημα:

ΕΙΣΑΓΕΤΕ
ΣΕ
rental_copy ( rental_id,
ενοικίαση_ημερομηνία,
ημερομηνία επιστροφής )
ΕΠΙΛΕΓΩ
rental_id,
ενοικίαση_ημερομηνία,
ημερομηνία επιστροφής
ΑΠΟ
ενοικίαση r?

Ένα μειονέκτημα αυτής της μεθόδου είναι ότι μπορεί να σας ζητήσει να δημιουργήσετε έναν παρόμοιο πίνακα με τις στήλες που θέλετε να συμπεριλάβετε. Αυτό μπορεί να είναι επαναλαμβανόμενο και αποτελεσματικό όταν εργάζεστε με ένα μεγάλο σύνολο δεδομένων.

Μέθοδος 3: Αντιγράψτε τη δομή του πίνακα

Σε άλλες περιπτώσεις, μπορεί να συναντήσετε περιπτώσεις όπου σας ενδιαφέρει η δομή του πίνακα χωρίς να χρειάζεστε τα δεδομένα που είναι αποθηκευμένα στον πίνακα.

Σε ένα τέτοιο σενάριο, μπορείτε να χρησιμοποιήσετε τη δήλωση CREATE TABLE σε συνδυασμό με την ρήτρα LIKE ως εξής:

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ νέου_πίνακα ( LIKE source_table ) ;

Αυτό θα πρέπει να δημιουργήσει έναν νέο πίνακα με το καθορισμένο όνομα και παρόμοια δομή όπως ο 'πίνακας_πηγής' χωρίς να αντιγράψει πραγματικά τα δεδομένα.

Αντιγραφή των πινάκων μεταξύ βάσεων δεδομένων

Για να αντιγράψουμε τους πίνακες μεταξύ διαφορετικών βάσεων δεδομένων, μπορούμε να εξαγάγουμε τα δεδομένα από τη βάση δεδομένων προέλευσης και να τα εισάγουμε στη βάση δεδομένων προορισμού.

Αυτό συνήθως περιλαμβάνει τη χρήση μορφών που βασίζονται σε αρχεία, όπως CSV ή ειδικά εργαλεία βάσης δεδομένων. Μπορείτε να ανατρέξετε στην τεκμηρίωση της βάσης δεδομένων σας σχετικά με τον τρόπο επίτευξης αυτού, καθώς μπορεί να διαφέρει ανάλογα με τη μηχανή βάσης δεδομένων.

Μέθοδος 4: Χρήση των Συνδεδεμένων Διακομιστών (SQL Server)

Στον SQL Server, μπορούμε να αντιγράψουμε τους πίνακες μεταξύ βάσεων δεδομένων χρησιμοποιώντας Συνδεδεμένους διακομιστές.

Οι Συνδεδεμένοι Διακομιστές μας επιτρέπουν να δημιουργήσουμε μια σύνδεση με μια απομακρυσμένη βάση δεδομένων και να ρωτήσουμε ή να μεταφέρουμε τα δεδομένα μεταξύ τους.

Η σύνταξη έχει ως εξής:

ΕΙΣΑΓΩΓΗ ΣΕ [ LinkedServerName ] . [ Ονομα βάσης δεδομένων ] . [ Όνομα σχήματος ] . [ target_table ]
ΕΠΙΛΕΓΩ * FROM source_table;

Αυτό επιτρέπει την απομακρυσμένη σύνδεση και μεταφορά δεδομένων μεταξύ απομακρυσμένων διακομιστών.

συμπέρασμα

Σε αυτό το σεμινάριο, μάθαμε πώς να χρησιμοποιούμε και να εργαζόμαστε με διάφορες μεθόδους και τεχνικές αντιγραφής ενός πίνακα σε SQL.