Οδηγός εισαγωγής δεδομένων σε πίνακες SQL (3 μέθοδοι)

Οδηγός εισαγωγής δεδομένων σε πίνακες SQL (3 μέθοδοι)

März 11, 2023 0 Von admin

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

  1. Όταν θέλετε να φορτώσετε τα δεδομένα γραμμή προς γραμμή.
  2. Όταν θέλετε να εισαγάγετε τα δεδομένα από ένα αρχείο .csv.
  3. Όταν προσθέτετε γραμμές στον νέο σας πίνακα SQL που είναι τα αποτελέσματα ενός άλλου ερωτήματος SQL.

Σημείωση: Αυτό θα είναι ένα πρακτικό μάθημα, γι‘ αυτό σας ενθαρρύνω να κάνετε το μέρος της κωδικοποίησης μαζί μου.

Σημείωση 2: Εάν είστε νέος εδώ, ας ξεκινήσουμε πρώτα με αυτά τα άρθρα SQL:

  1. Πώς να εγκαταστήσετε Python, SQL, R και Bash (για μη προγραμματιστές)
  2. Πώς να εγκαταστήσετε το SQL Workbench για PostgreSQL
  3. SQL for Data Analysis – Tutorial for Beginners – ep 1
  4. Πώς να δημιουργήσετε έναν πίνακα σε SQL

Μέθοδος #1: Φόρτωση της γραμμής δεδομένων ανά γραμμή (INSERT INTO)

Όταν έχουμε μόνο λίγες γραμμές δεδομένων, ο ευκολότερος τρόπος είναι να τα προσθέσουμε χειροκίνητα. Μπορούμε να το κάνουμε αυτό χρησιμοποιώντας το INSERT Δήλωση SQL:

Ας επιστρέψουμε στα δικά μας test_results πίνακα που δημιουργήσαμε στο προηγούμενο σεμινάριο.

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

Προς το παρόν, είναι ένα άδειο τραπέζι. Ας το αλλάξουμε — και ας προσθέσουμε μια γραμμή σε αυτό χρησιμοποιώντας INSERT:

INSERT INTO test_results
VALUES
('Walt', 1, '1980-12-01', 95.50, 'A', TRUE);

Εξαιρετικό — αυτό εισήγαγε μια νέα σειρά στον πίνακα SQL.

Ας δούμε όμως το αποτέλεσμα και ας ρωτήσουμε τον πίνακα μας!

SELECT * FROM test_results;

φόρτωση δεδομένων postgresql - εισαγωγή τιμών 1 ερώτημα

Ω! ναι! Τα αποτελέσματα των δοκιμών του Walt βρίσκονται στον πίνακα SQL, πράγματι!

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

INSERT INTO test_results
VALUES
('Jesse', 2, '1988-02-11', 74.00, 'C', TRUE),
('Todd', 3, '1987-06-13', 60.00, 'D', TRUE),
('Tuco', 4, '1970-11-11', 15.50, 'F', FALSE),
('Gus', 5, '1975-08-08', 80.00, 'B', TRUE)
;

Ρωτήστε τον πίνακα για άλλη μια φορά για να δείτε τα αποτελέσματα:
SELECT * FROM test_results;

φόρτωση δεδομένων postgresql - εισαγωγή τιμών 2 ερώτημα

Τώρα, έχουμε φορτωμένα δεδομένα 5 μαθητών σε αυτόν τον γλυκό πίνακα SQL. Ήταν εύκολο σαν πίτα, σωστά;

Τώρα θέλω να αφιερώσετε λίγα δευτερόλεπτα για να ελέγξετε τη σύνταξη:

  1. INSERT INTO είναι η λέξη-κλειδί SQL.
  2. test_results είναι το όνομα του πίνακα στον οποίο θέλουμε να τοποθετήσουμε τα δεδομένα.
  3. VALUES είναι μια άλλη λέξη-κλειδί SQL.
  4. Στη συνέχεια, οι πραγματικές σειρές δεδομένων έρχονται μία προς μία – κάθε μία από αυτές ανάμεσα σε παρενθέσεις (()) και χωρίζονται με κόμμα (,).
  5. Οι τιμές των πεδίων διαχωρίζονται επίσης με κόμμα (,).
  6. Προσέξτε τα σημεία δεδομένων που είναι οι τύποι δεδομένων TEXT ή DATE — αυτά τα σημεία δεδομένων πρέπει να περνούν μεταξύ των αποστρόφων (') όταν γράφετε το ερώτημά σας SQL!
  7. Και μην ξεχνάτε ποτέ το ερωτηματικό (;) στο τέλος της δήλωσης SQL!

Εάν είστε περισσότερο του οπτικού τύπου, εδώ είναι το φύλλο απάτης σας:

εισαγωγή δεδομένων postgresql - εισαγωγή στη σύνταξη τιμών

Δεσμεύστε τις αλλαγές σας!

Όπως έχουμε συζητήσει στο προηγούμενο άρθρο, εάν κάνετε αλλαγές στη βάση δεδομένων σας με ένα εργαλείο διαχείρισης SQL (όπως pgadmin4 ή SQL Workbench), πρέπει COMMIT τους. Πάντα! Τι σημαίνει? Μάθετε περισσότερα εδώ.
Αλλά προς το παρόν, ας τρέξουμε αυτή τη μία επιπλέον γραμμή στον διαχειριστή SQL:

COMMIT;

εισαγωγή δεδομένων postgresql - commit

Σημείωση: Εάν ενεργοποιήσατε την αυτόματη δέσμευση ή εάν βρίσκεστε στη γραμμή εντολών και όχι σε ένα εργαλείο ερωτημάτων SQL, τότε μπορείτε να παραλείψετε αυτό το βήμα δέσμευσης.

SQL TRUNCATE: αδειάστε τον πίνακα χωρίς να διαγράψετε τον πίνακα

Έχετε ήδη μάθει για το DROP TABLE Δήλωση SQL που διαγράφει τον πίνακα SQL. Αλλά πολύ συχνά δεν θέλετε να διαγράψετε τον πίνακα σας (επειδή θέλετε να διατηρήσετε τη δομή του), διαγράψτε μόνο αυτά τα δεδομένα. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας το TRUNCATE TABLE δήλωση.

Πληκτρολογήστε αυτό:
TRUNCATE TABLE test_results;
Αυτό θα διαγράψει όλες τις σειρές που έχουμε εισαγάγει στον πίνακα πριν, αλλά θα διατηρήσει τον ίδιο τον πίνακα.

Μην ξεχνάτε ότι πρέπει να δεσμεύσετε τις αλλαγές σας!

εισαγωγή δεδομένων postgresql - περικοπή πίνακα

COMMIT;

Σημείωση: περισσότερα σχετικά με το άδειασμα ενός πίνακα SQL εδώ: Εκμάθηση SQL TRUNCATE TABLE και DROP TABLE.

Εντάξει, αν όλα έχουν ρυθμιστεί, ας δούμε το…

Μέθοδος #2: εισαγάγετε ένα αρχείο .csv σε έναν πίνακα SQL (COPY)

Για να είμαι ειλικρινής, αυτό είναι ένα πιο συνηθισμένο σενάριο από την πρώτη μέθοδο που έδειξα. Ως αναλυτής δεδομένων, λαμβάνετε αρκετά τακτικά σύνολα ακατέργαστων δεδομένων σε μορφές αρχείων, όπως π.χ .xlsx ή .csv ή .txt. Μπορείτε να εισαγάγετε αυτά τα αρχεία δεδομένων χρησιμοποιώντας το COPY δήλωση.

Η γενική μορφή της δήλωσης μοιάζει με αυτό:

COPY table_name FROM '/path/step/file_name' DELIMITER ' ';

Επιτρέψτε μου να σας το αναλύσω:

  1. COPY είναι η λέξη-κλειδί SQL που προσδιορίζει ότι θα εισαγάγετε δεδομένα από ένα αρχείο σε έναν πίνακα SQL.
  2. table_name είναι το όνομα του τραπέζι ότι θέλετε να βάλετε τα δεδομένα σε. (Αυτό είναι λίγο αντίθετο στη σύνταξη… Αλλά γνωρίζουμε ότι η SQL δεν είναι το πιο «φιλικό προς τον κωδικοποιητή» εργαλείο σύνταξης. Επομένως, απλώς ξεπεράστε το και απλώς μάθετε με αυτόν τον τρόπο.)
  3. FROM είναι μια άλλη λέξη-κλειδί SQL μετά από αυτό θα…
  4. …καθορίστε το όνομα και τη θέση του αρχείου που θέλετε COPY τα δεδομένα από. Αυτό πηγαίνει μεταξύ αποστρόφων.
  5. Και τελικά, πρέπει να καθορίσετε το διαχωριστικό πεδίου στο αρχικό σας αρχείο πληκτρολογώντας DELIMITER και το ίδιο το διαχωριστικό πεδίου μεταξύ αποστρόφων. Έτσι σε αυτή την περίπτωση ' ' σημαίνει ότι ο οριοθέτης θα ήταν ένας χώρος.

Παράδειγμα για COPY (εισαγωγή δεδομένων .csv σε SQL)

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

Σημείωση: σε αυτό το παράδειγμα, θα σας βοηθήσω να δημιουργήσετε ένα εικονικό αρχείο .csv. Αν έχετε το δικό σας .csv αρχείο, μπορείτε απλώς να παραλείψετε το ΒΗΜΑ #1, #2 και #3.

ΒΗΜΑ 1) Αρχικά, πρέπει να ανοίξετε το παράθυρο του Terminal και να συνδεθείτε στον διακομιστή δεδομένων σας.
(Σημείωση: Σε αυτό το σημείο υποθέστε ότι ξέρετε πώς να το κάνετε – αν όχι: με αυτόν τον τρόπο παρακαλώ.)

εισαγωγή δεδομένων postgresql - γραμμή εντολών

ΒΗΜΑ 2) Στη συνέχεια, πληκτρολογήστε αυτό (απλώς κάντε αντιγραφή-επικόλληση από εδώ) στη γραμμή εντολών:

echo "Walt,1,1980-12-01,95.50,A,TRUE
Jesse,2,1988-02-11,74.00,C,TRUE
Todd,3,1987-06-13,60.00,D,TRUE
Tuco,4,1970-11-11,15.50,F,FALSE
Gus,5,1975-08-08,80.00,B,TRUE" > test_results.csv

Αυτό θα δημιουργήσει ένα .csv κλήθηκε το αρχείο test_results.csv.
(Σε πραγματικές περιπτώσεις, θα λάβετε αυτό το αρχείο .csv από κάποιον στην εταιρεία σας.)

φόρτωση δεδομένων postgresql - δημιουργήστε το αρχείο csv

ΒΗΜΑ 3) Ελέγξτε ξανά το νέο σας αρχείο: cat test_results.csv.
Και μάθετε την ακριβή τοποθεσία του πληκτρολογώντας pwd.

ΒΗΜΑ 4) Στη συνέχεια, πρέπει να συνδεθείτε στο PostgreSQL (ακόμα βρίσκεται στο παράθυρο του τερματικού σας):
psql -U [your_sql_username] -d postgres
(Για μένα είναι psql -U dataguy -d postgres)

ΒΗΜΑ 5) Στη συνέχεια πληκτρολογήστε το COPY δήλωση που μόλις συζητήσαμε παραπάνω:
\COPY test_results FROM '/home/dataguy/test_results.csv' DELIMITER ',';
Και μπουμ, τα δεδομένα εισάγονται από τα πρόσφατα δημιουργημένα μας .csv αρχείο στον πίνακα SQL μας.

γραμμή εντολών εισαγωγής δεδομένων postgresql copy
γραμμή εντολών: αντιγράψτε το περιεχόμενο του αρχείου .csv

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

φόρτωση δεδομένων postgresql εισαγωγή csv στα αποτελέσματα SQL
SQL Workbench: ελέγξτε τα αποτελέσματα

Μερικά σχόλια σχετικά με τη μέθοδο φόρτωσης δεδομένων .csv

  • έγραψα \COPY και όχι μόνο COPY επειδή ο χρήστης SQL μου δεν έχει SUPERUSER προνόμια, οπότε τεχνικά δεν μπορούσα να χρησιμοποιήσω το COPY εντολή (αυτό είναι θέμα SQL). Πληκτρολόγηση \COPY Αντίθετα είναι η απλούστερη λύση — αλλά η καλύτερη λύση θα ήταν να δώσετε στον εαυτό σας SUPERUSER προνόμια χρησιμοποιήστε το πρωτότυπο COPY εντολή. (Σε αυτό βίντεο ξεκινώντας στις 2:55 δείχνω πώς να δίνω SUPERUSER προνόμια στον χρήστη SQL σας. Εάν βρίσκεστε εδώ από ένα από τα διαδικτυακά μαθήματά μου, πιθανότατα έχουμε ήδη διορθώσει αυτό το πρόβλημα στο μάθημα.)
  • Γιατί δεν το κάναμε COPY εντολή στο εργαλείο διαχείρισης SQL; Ίδιος λόγος: αν δεν έχετε SUPERUSER προνόμια, δεν μπορείτε να εκτελέσετε το COPY εντολή από ένα εργαλείο διαχείρισης SQL — μόνο από τη γραμμή εντολών. Αν ακολουθήσετε το βίντεο που έγραψα στο προηγούμενο σημείο, θα μπορείτε να εκτελέσετε το ίδιο COPY δήλωση από το pgadmin ή το SQL Workbench.
  • ο '/home/dataguy/test_results.csv' είναι η τοποθεσία και το όνομα του αρχείου, μαζί. Και πάλι, ανακαλύψαμε την τοποθεσία χρησιμοποιώντας το pwd εντολή.
    εισαγωγή δεδομένων postgresql διαδρομή 2
  • Και τέλος: εάν αισθάνεστε άβολα με αυτά τα βήματα της γραμμής εντολών, διαβάστε τα πρώτα άρθρα από τη σειρά άρθρων της Γραμμής εντολών για Αναλυτές δεδομένων.

Και μπουμ, τα δεδομένα εισάγονται από α .csv αρχείο στον πίνακα SQL μας.
Εκτελέστε αυτό το ερώτημα από τον διαχειριστή SQL:

Εισαγάγετε δεδομένα csv δοκιμή αποτελεσμάτων postgresql

SELECT * FROM test_results;

Φοβερός!

Μέθοδος #3: Εισαγάγετε την έξοδο ενός άλλου ερωτήματος SQL στον πίνακα SQL

Θέλετε να αποθηκεύσετε την έξοδο του ερωτήματός σας SQL; Δεν είναι πρόβλημα… Ίσως θέλετε να αποθηκεύσετε τα καθημερινά σας KPI που υπολογίζονται από πίνακες SQL — ή θέλετε να έχετε την καθαρή έκδοση ενός συνόλου δεδομένων δίπλα στο πρωτότυπο. Στην SQL, μπορείτε να το κάνετε αυτό εύκολα.

Ας πούμε ότι θέλουμε να δημιουργήσουμε έναν πίνακα όπου θέλουμε να αποθηκεύουμε μόνο τα ονόματα από το δικό μας test_results τραπέζι. (Αυτό είναι ένα εικονικό παράδειγμα, αλλά θα κάνει τη δουλειά προς το παρόν.)

Βήμα 1) Δημιουργήστε αυτόν τον νέο πίνακα SQL:

CREATE TABLE student_names
(
name TEXT
);

Βήμα 2)
Χρησιμοποιήστε το INSERT INTO δήλωση (που μάθαμε στο „Μέθοδος # 1“ ενότητα, στην αρχή αυτού του άρθρου), μόνο αντί να πληκτρολογήσετε τις τιμές με μη αυτόματο τρόπο, βάλτε a SELECT δήλωση στο τέλος της ερώτησης.

Κάτι σαν αυτό:

INSERT INTO student_names
(SELECT name FROM test_results);

Εγινε!
Το υποερώτημα μεταξύ των παρενθέσεων θα εκτελεστεί πρώτα — στη συνέχεια η έξοδος του θα εισαχθεί αυτόματα στο πρόσφατα δημιουργημένο student_names τραπέζι.

Ελέγξτε το αποτέλεσμα:
SELECT * FROM student_names;

φόρτωση δεδομένων postgresql insert στον πίνακα

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

CREATE TABLE test_averages
(
test_average DECIMAL
);

Επειτα:

INSERT INTO test_averages
(SELECT AVG(test_result) FROM test_results);

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

εισαγωγή στη συνάρτηση πίνακα

Αυτός ήταν ο τρίτος – ελαφρώς πιο προηγμένος – τρόπος για να εισαγάγετε τα δεδομένα σας σε έναν πίνακα SQL. Τώρα προχωρήστε και δοκιμάστε αυτές τις μεθόδους στο δικό σας σύνολο δεδομένων!

συμπέρασμα

Σε αυτό το άρθρο μάθαμε τρεις μεθόδους για τη φόρτωση δεδομένων σε πίνακες SQL:

  1. Όταν θέλεις INSERT τα δεδομένα σας χειροκίνητα. (INSERT INTO ___ VALUES (____);)
  2. Όταν θέλεις COPY τα δεδομένα σας από ένα αρχείο. (COPY ____ FROM '_____' DELIMITER ' ';)
  3. Όταν θέλετε να αποθηκεύσετε την έξοδο ενός άλλου ερωτήματος SQL. (INSERT INTO ____ (SELECT ____);)

Τώρα, ξέρετε πώς να δημιουργείτε νέους πίνακες στην SQL και πώς να φορτώνετε δεδομένα σε αυτούς!

Στην υγειά σας,
Master Tommy