Εισαγωγή βάσεων δεδομένων mysql. Πώς να εισαγάγετε μια μεγάλη βάση δεδομένων MySQL παρακάμπτοντας τους περιορισμούς phpMyAdmin

24.03.2023

Καλησπέρα φίλοι, σήμερα θα μάθουμε πώς να κάνουμε. Σε τι χρησιμεύει, μπορείτε να κάνετε μια ερώτηση. Πρωτα απο ολα εξαγωγή βάσης δεδομένωνπρέπει να γίνεται περιοδικά, ώστε σε καταστάσεις έκτακτης ανάγκης να μην χάνετε σημαντικές πληροφορίες για εσάς. Η εξαγωγή θα είναι ένα μικρό αρχείο που θα αποθηκεύει όλες τις πληροφορίες σχετικά με τη βάση δεδομένων. Για εξαγωγή βάσης δεδομένωνπρέπει να μεταβείτε στο PHPMyAdmin και να κάνετε κλικ στη βάση δεδομένων που σας ενδιαφέρει. Μετά από αυτό, θα δείτε όλους τους πίνακες σε αυτό και, χωρίς να μπείτε σε αυτούς, κάντε κλικ στο κουμπί μενού που ονομάζεται εξαγωγή. Η παρακάτω σελίδα θα εμφανιστεί μπροστά σας:


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


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


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


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

Χαιρετισμούς, φίλοι! 🙂

Σήμερα αποφάσισα να συνεχίσω να μιλάω για την εργασία με MySQL στην κονσόλα και να δώσω προσοχή στη διαδικασία εξαγωγής της βάσης δεδομένων. Δεδομένα MySQL.

Στο άρθρο θα μιλήσω για το πώς να φτιάξετε μια χωματερή Βάσεις δεδομένων MySQL, καθώς και εξαγωγή δεδομένων από MySQL σε αρχείο Excel και μορφή csv.

Θα εξετάσουμε διάφορες επιλογές για την εξαγωγή πληροφοριών από: δημιουργία χωματερής μιας και πολλών βάσεων δεδομένων, εξαγωγή δεδομένων από ξεχωριστούς πίνακες και αποτελέσματα αυθαίρετων ΕΠΙΛΕΓΩαιτήσεων.

Και επίσης ας μιλήσουμε για τον τρόπο εμφάνισης δεδομένων από τη βάση δεδομένων MySQL στην κονσόλα διακομιστή και γραμμή εντολών MySQL.

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

Πρώτον, επειδή υπάρχει ήδη αρκετό υλικό στο δίκτυο για αυτό το θέμα. Επιπλέον, υλικό υψηλής ποιότητας, που δεν το καίω με την επιθυμία να κάνω copy-paste.

Και, δεύτερον, ο ίδιος εξέτασα εν συντομία τη διαδικασία εξόδου πληροφοριών από μια βάση δεδομένων MySQL σε ένα αρχείο SQL σε ένα από τα άρθρα μου, όπου μίλησα.

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

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

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

Δημιουργία ενός dump μιας βάσης δεδομένων MySQL μέσω της κονσόλας

Θέλω να κάνω μια μικρή διευκρίνιση από την αρχή.

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

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

Εξαγωγή δεδομένων- Απλώς εξάγει πληροφορίες από πίνακες σε μορφή κειμένου για περαιτέρω εργασία με επεξεργαστές κειμένου ή γραφικών.

Επομένως, οι εντολές για αυτές τις ενέργειες θα είναι ελαφρώς διαφορετικές.

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

Έτσι, για την απλούστερη και πιο κοινή επιλογή - την εξαγωγή δεδομένων από μια συγκεκριμένη βάση δεδομένων στην κονσόλα MySQL για τη μεταφορά τους σε άλλο διακομιστή ή εσωτερικό αντίγραφο, πρέπει να εκτελέσετε την ακόλουθη εντολή:

mysqldump -u όνομα χρήστη -p database_name > path_and_dump_file_name

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

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

mysqldump -u όνομα χρήστη -p --όλες οι βάσεις δεδομένων > path_and_dump_file_name

Για να απορρίψετε μόνο μερικές συγκεκριμένες βάσεις δεδομένων, πρέπει να καλέσετε το mysqldump με τις ακόλουθες επιλογές:

mysqldump -u όνομα χρήστη -p --bases data database_name1, database_name2, ... > path_and_dump_file_name

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

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

Ο τρόπος δημιουργίας αντιγράφων ασφαλείας ορισμένων πινάκων MySQL και λήψης των δεδομένων τους σε ευανάγνωστη μορφή θα συζητηθεί περαιτέρω.

Απόρριψη πίνακα MySQL και εξαγωγή δεδομένων

Για να δημιουργήσουμε μια ένδειξη ορισμένων πινάκων βάσης δεδομένων MySQL, χρειαζόμαστε το ίδιο βοηθητικό πρόγραμμα mysqldump, καλείται με τις ακόλουθες παραμέτρους:

mysqldump -u όνομα χρήστη -p database_name table_name1, table_name2, ... > path_and_dump_file_name

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

mysqldump -u όνομα χρήστη -p --bases data database_name1, database_name2 --tables table_name1, table_name2, ... > path_and_dump_file_name

Το παραπάνω παράδειγμα θα εμφανίσει το ακόλουθο σφάλμα:

Mysqldump: Παρουσιάστηκε σφάλμα: 1049: Άγνωστη βάση δεδομένων "database_name1", κατά την επιλογή της βάσης δεδομένων

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

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

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

Η επιλογή κλήσης στο βοηθητικό πρόγραμμα θα μας βοηθήσει να πετύχουμε τους στόχους μας. mysqlαπό την κονσόλα με ορισμένες παραμέτρους:

Mysql -u username -p database_name -e "SELECT * FROM table_name"

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

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

Mysql -u όνομα χρήστη -p -e "SELECT * FROM tablename" > path_and_filename

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

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

Εάν θέλετε να εξαγάγετε δεδομένα από τη βάση δεδομένων MySQL σε μορφή xls ή csv, έτσι ώστε το αρχείο που προκύπτει να εμφανίζεται σωστά στους επεξεργαστές υπολογιστικών φύλλων, τότε πώς να το κάνετε αυτό θα συζητηθεί λίγο αργότερα 🙂

Δημιουργία αντιγράφων ασφαλείας και εξαγωγή δεδομένων από τη βάση δεδομένων MySQL με χρήση ερωτημάτων

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

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

Για δημιουργία αντιγράφων ασφαλείας, χρειαζόμαστε το ίδιο βοηθητικό πρόγραμμα mysqldump, το οποίο θα πρέπει να ονομάζεται ως εξής:

Mysqldump -u όνομα χρήστη -p dbname table_name --where "lookup" > path_and_dump_file_name

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

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

Mysql -u username -p -e "SELECT * FROM table_name WHERE αναζήτηση" > path_and_file_name

Όπως καταλαβαίνετε, εκτός από διάφορες διευκρινίσεις που καθορίζονται στο αίτημα χρησιμοποιώντας την οδηγία ΟΠΟΥ, μπορείτε να χρησιμοποιήσετε άλλες δομές SQL: ΣΥΜΜΕΤΟΧΗ, ΕΝΩΣΗκαι τα λοιπά.

Οποιαδήποτε στατιστικά στοιχεία μπορούν να συλλεχθούν 🙂

Η ίδια ενέργεια μπορεί επίσης να εκτελεστεί από τη γραμμή εντολών MySQL με την ακόλουθη εντολή:

SELECT * FROM database_table WHERE αναζήτηση ΣΤΟ OUTFILE "path_and_file_name";

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

Εάν τα παραπάνω είναι η περίπτωσή σας, τότε μπορείτε να βρείτε την πλήρη λίστα των παραμέτρων και των επιλογών για την κλήση αυτής της εντολής εδώ - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

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

mysqldump -u όνομα χρήστη -h MySQL_server_host_or_IP -p --no-autocommit --opt database_name > path_and_dump_file_name;

Για χάρη του πειράματος, χρησιμοποίησα αυτήν την επιλογή για να απορρίψω τη βάση δεδομένων Μέγεθος MySQLστα 143 MB. Η επακόλουθη επαναφορά χρειάστηκε 59 δευτερόλεπτα χρόνου έναντι 1 λεπτό και 3 δευτερολέπτων όταν αποκαταστάθηκε η βάση δεδομένων από μια ένδειξη που έγινε καλώντας το mysqldump χωρίς ειδικές επιλογές.

Συμφωνώ ότι αυτό είναι ασήμαντο. Αλλά αυτό είναι μόνο σε περίπτωση δεδομένου όγκουδεδομένα. Εάν χρησιμοποιείται αυτή η τεχνικήόταν δημιουργείτε ένα dump μεγαλύτερο από 1 GB, η διαφορά θα είναι πιο σημαντική.

Εάν αντιμετωπίσετε μια τέτοια κατάσταση, τότε μην ξεχάσετε να συσκευάσετε πρώτα το απόσπασμα της βάσης δεδομένων MySQL σε ένα αρχείο. Το tar.gz είναι το καλύτερο. Τότε η αποκατάσταση θα πάρει ακόμη λιγότερο χρόνο.

Εξαγωγή δεδομένων από MySQL σε αρχεία Excel και csv

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

Όπως γνωρίζετε, η μόνη σημαντική διαφορά μεταξύ αυτών των μορφών είναι ότι οι επεκτάσεις xls και xlsx έχουν αρχεία που έχουν δημιουργηθεί στο πρόγραμμα της Microsoft. Office Excel, το οποίο λειτουργεί μόνο στα Windows, ενώ τα αρχεία csv είναι πιο ευέλικτα και οι λειτουργίες με αυτά είναι δυνατές σε πολλούς επεξεργαστές.

Αυτό δεν σημαίνει ότι το xls δεν θα ανοίξει πουθενά εκτός από το Microsoft Office Excel. Το ίδιο OpenOffice επιβεβαιώνει το αντίθετο.

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

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

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

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

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

Έτσι, αν μιλάμε για τον τρόπο εξαγωγής δεδομένων από MySQL σε xls και csv, τότε μπορείτε να το κάνετε απευθείας στην κονσόλα διακομιστή μέσω του βοηθητικού προγράμματος mysqlή στο, το έργο με το οποίο σας παρουσίασα στο προηγούμενο άρθρο μου.

Ας ξεκινήσουμε με τη σειρά.

Μπορείτε να εξαγάγετε δεδομένα από τη βάση δεδομένων MySQL σε μορφές csv και xls απευθείας στην κονσόλα διακομιστή χρησιμοποιώντας τις ακόλουθες εντολές.

Επί linuxσυστήματα:

Mysql -u όνομα χρήστη -d dbname -p -e "SELECT * FROM dbtable;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. csv

Κατ 'αρχήν, εάν είναι απολύτως απαραίτητο, μπορείτε να χρησιμοποιήσετε αυτήν την εντολή για να εξάγετε δεδομένα MySQL σε ένα αρχείο Excel. Αλλά, για να είμαι ειλικρινής, δεν ασχολήθηκα με δεδομένα στην πράξη και τι θα βγει στο τέλος - δεν έχω ιδέα, γιατί. Δουλεύω τώρα με Windows. Εάν χρησιμοποιείτε αυτήν την εντολή στο Linux, γράψτε στα σχόλια για τα αποτελέσματα της εργασίας σας. Νομίζω ότι οι πληροφορίες θα ενδιαφέρουν όλους.

Επί Windows:

Η εξαγωγή δεδομένων από πίνακες MySQL σε csv με την παραπάνω εντολή, δυστυχώς, δεν θα πετύχει σε αυτήν την περίπτωση, επειδή Τα Windows, σε αντίθεση με το Linux, δεν έχουν ενσωματωμένο εντολή κονσόλαςγια να εργαστείτε με ροές, οι οποίες είναι sed σε Linux.

Εγκαταστήστε το, φυσικά, μπορείτε, αλλά πάρα πολύ κόπο. Εναλλακτικά, μπορείτε επίσης να χρησιμοποιήσετε CygWinείναι ένας εξομοιωτής κονσόλας Linux για συστήματα Windows.

Λοιπόν, αν το έχετε ήδη εγκαταστήσει. Διαφορετικά, η εξαγωγή δεδομένων από τη βάση δεδομένων MySQL με τον επιλεγμένο τρόπο θα μας φέρει πάρα πολύ πρόβλημα.

Αλλά η εξαγωγή πληροφοριών σε ένα αρχείο xls είναι τόσο εύκολη όσο 5 καπίκια 🙂 Είναι πολύ εύκολο να το εκτελέσετε με τον ακόλουθο τρόπο, τον οποίο προσπάθησα προσωπικά:

Mysql -u όνομα χρήστη -d dbname -p -e "SELECT * FROM dbtable;" > path_and_file_name.xls

άνοιξε δεδομένο αρχείοστο Microsoft Office Excel χωρίς κανένα απολύτως πρόβλημα. Το μόνο πράγμα είναι ότι κατά το άνοιγμα ενός μηνύματος εμφανίστηκε προειδοποίηση ότι η πραγματική μορφή του αρχείου που ανοίγει διαφέρει από την καθορισμένη επέκταση.

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

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

Εάν αντιμετωπίσετε προβλήματα κατά τη διαδικασία χρήσης του αρχείου xls που εξάγεται από τη MySQL, είτε σε αυτό το πρόγραμμα είτε σε άλλα, ενημερώστε με στα σχόλια.

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

Το OpenOffice, παρεμπιπτόντως, δεν νοιάζεται 🙂 Οριοθετούσε αυτόματα τις πληροφορίες που ελήφθησαν από τον τρόπο που εξάγαμε τα περιεχόμενα της βάσης δεδομένων MySQL σε xls. Δεν ξέρω πώς το κάνει - αλλά συνιστώ να το χρησιμοποιήσετε 🙂

Λοιπόν, το ίδιο Microsoft Office Excel εμφάνισε όλες τις πληροφορίες που αντιστοιχούν σε μία εγγραφή στον πίνακα, γράφοντάς τις σε ένα κελί χωρίς διαχωριστικά. Νομίζω ότι και άλλοι συντάκτες υπολογιστικών φύλλων θα κάνουν το ίδιο.

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

Και εδώ προσέγγισα ομαλά τον δεύτερο τρόπο εξαγωγής δεδομένων MySQL σε csv και xls, που είναι να χρησιμοποιήσω τη γραμμή εντολών MySQL.

Έτσι, για να εξάγουμε δεδομένα MySQL σε ένα αρχείο csv με αυτόν τον τρόπο, χρειαζόμαστε την ακόλουθη εντολή:

ΕΠΙΛΕΞΤΕ * ΑΠΟ Πίνακας βάσης δεδομένων ΣΤΟ ΕΚΤΟΣ ΑΡΧΕΙΟ "path_and_file_name.csv" ΠΕΔΙΑ ΠΟΥ ΤΕΡΜΑΤΙΖΟΝΤΑΙ ΑΠΟ "," ΠΕΡΙΛΑΜΒΑΝΟΝΤΑΙ ΑΠΟ """ ΓΡΑΜΜΕΣ ΠΟΥ ΤΕΡΜΑΤΙΖΟΝΤΑΙ ΑΠΟ "\n";

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

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

ΕΠΙΛΕΞΤΕ * ΑΠΟ Πίνακας βάσης δεδομένων ΣΕ ΕΚΤΟΣ ΑΡΧΕΙΟΥ "path_and_file_name.xls";

Ωστόσο, στην πράξη, δεν είναι όλα τόσο απλά όσο περιέγραψα. Κατά την εκτέλεση της εντολής, ενδέχεται να αντιμετωπίσετε το ακόλουθο σφάλμα στην κονσόλα που εμποδίζει την ολοκλήρωση της εξαγωγής:

ΣΦΑΛΜΑ 1290 (HY000): Ο διακομιστής MySQL εκτελείται με την επιλογή --secure-file-priv, επομένως δεν μπορεί να εκτελέσει αυτήν την πρόταση

Προκαλείται επειδή ο διακομιστής MySQL ξεκίνησε με την επιλογή --secure-file-priv. Προσωπικά, αντιμετώπισα αυτό το πρόβλημα λόγω του γεγονότος ότι για εργασία στην κονσόλα χρησιμοποιώ το κιτ διανομής MySQL που περιλαμβάνεται στο κιτ WAMP OpenServer, το οποίο, με τη σειρά του, ξεκινά με αυτόν τον τρόπο τον διακομιστή MySQL.

Υπάρχουν δύο τρόποι επίλυσης του προβλήματος εδώ:

  • Αλλάξτε τις επιλογές εκκίνησης διακομιστή MySQL
  • Αλλαγή διαδρομής προς το αρχείο εξαγωγής MySQL προορισμού

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

Πρώτα πρέπει να μεταβείτε στη γραμμή εντολών MySQL και να εκτελέσετε μία από τις ακόλουθες εντολές:

ΕΜΦΑΝΙΣΤΕ ΜΕΤΑΒΛΗΤΕΣ ΟΠΩΣ "secure_file_priv"? SELECT @@GLOBAL.secure_file_priv;

Το αποτέλεσμα της εκτέλεσης και των δύο θα είναι η τιμή της καθολικής μεταβλητής MySQL safe_file_priv, το οποίο περιέχει τη διαδρομή προς τον κατάλογο μέσω του οποίου μπορούν να εκτελεστούν οι λειτουργίες εξαγωγής και εισαγωγής δεδομένων MySQL (στο μέλλον, σύνδεσμος προς το άρθρο για την εισαγωγή δεδομένων).

Εκείνοι. όταν χρησιμοποιείτε εντολές ΦΟΡΤΩΣΗ ΔΕΔΟΜΕΝΩΝΚαι ΕΠΙΛΟΓΗ … INTO OUTFILEΤα εξαγόμενα και εισαγόμενα αρχεία μπορούν να βρίσκονται μόνο μέσα σε αυτόν τον κατάλογο.

Στην περίπτωσή μου, αυτή η μεταβλητή είχε καθορισμένη τιμή ΜΗΔΕΝΙΚΟ, επειδή Εγώ, όπως είπα ήδη, χρησιμοποιώ τα βοηθητικά προγράμματα MySQL από τη διανομή που περιλαμβάνεται στον OpenServer για να εργαστώ στην κονσόλα. Δεδομένη αξίαέδειξε ότι οι λειτουργίες εξαγωγής και εισαγωγής δεδομένων MySQL που χρησιμοποιούν τις καθορισμένες εντολές έκλεισαν εντελώς.

Όπως αποδείχθηκε αργότερα, αυτή είναι μια συνηθισμένη κατάσταση όταν χρησιμοποιείτε διακομιστές WAMP και MAMP σε κουτί.

Δυστυχώς, δεν ήταν δυνατό να χρησιμοποιήσω τις συνήθεις μεθόδους αλλαγής των τιμών των καθολικών μεταβλητών MySQL στην περίπτωσή μου:

SET variable_name = τιμή;

Ως αποτέλεσμα, είδα μόνο το ακόλουθο σφάλμα στην κονσόλα:

ΣΦΑΛΜΑ 1238 (HY000) στη γραμμή 1: Η μεταβλητή "secure_file_priv" είναι μια μεταβλητή μόνο για ανάγνωση.

Τέλος, για να αλλάξετε την τιμή μιας μεταβλητής safe_file_privκαι ανοίξτε τις λειτουργίες εξαγωγής και εισαγωγής, έπρεπε να πάω στο αρχείο διαμόρφωσης MySQL mysql.ini, το οποίο βρίσκεται στον ριζικό κατάλογο της διανομής MySQL ή μπορεί να προσπελαστεί με άλλο τρόπο εάν η MySQL περιλαμβάνεται στο WAMP/LAMP/ Κατασκευή διακομιστή MAMP.

Παρεμπιπτόντως, εάν θέλετε να αλλάξετε τη διαδρομή προς τον κατάλογο buffer ανταλλαγής αρχείων, θα χρειαστεί να κάνετε το ίδιο.

Στην περίπτωσή μου, αυτή η μεταβλητή υπήρχε ήδη στο config, μόνο σε μορφή σχολιασμού:

safe-file-priv = "%dprogdir%\\userdata\\temp"

Εάν δεν το έχετε, τότε γράψτε το από την αρχή στην ενότητα (τουλάχιστον, το βρίσκω εκεί).

Το σχολίασα και αποφάσισα να το χρησιμοποιήσω με τη μορφή που ήταν γραμμένο. Εκείνοι. κατά την εξαγωγή δεδομένων από τη MySQL και την επανεισαγωγή τους, τα αρχεία μου θα αποθηκεύονται πλέον στον κατάλογο c:\openserver\userdata\temp\.

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

Για να είστε σίγουροι, μετά την επανεκκίνηση του διακομιστή MySQL, εμφανίστε ξανά τη μεταβλητή safe_file_privκαι αντιγράψτε την τιμή του στο πρόχειρο.

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

ΕΠΙΛΟΓΗ * ΑΠΟ Πίνακας βάσης δεδομένων ΣΕ ΕΚΤΟΣ ΑΡΧΕΙΟΥ "value_secure_file_priv\file_name.csv";

Μετά από αυτό, η εξαγωγή δεδομένων από τη MySQL λειτούργησε στην περίπτωσή μου.

Σημαντικό σημείο! Εάν εργάζεστε με MySQL στα Windows, τότε μην ξεχάσετε να αλλάξετε το "\" σε "/" κατά τον καθορισμό της διαδρομής προς το αρχείο, διαφορετικά υπάρχει σφάλμα με --secure-file-privθα συνεχίσει να εμφανίζεται ούτως ή άλλως.

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

Εάν σας άρεσε το άρθρο, μπορείτε να ευχαριστήσετε τον συγγραφέα αναδημοσιεύοντας το άρθρο μεσα ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣή οικονομικά χρησιμοποιώντας την παρακάτω φόρμα, ώστε να πληρώσετε για τη βασική φιλοξενία.

Καλή τύχη σε όλους και τα λέμε σύντομα! 🙂

ΥΣΤΕΡΟΓΡΑΦΟ.: εάν χρειάζεστε έναν ιστότοπο ή θέλετε να κάνετε αλλαγές σε έναν υπάρχοντα, αλλά δεν υπάρχει χρόνος και επιθυμία για αυτό, μπορώ να προσφέρω τις υπηρεσίες μου.

Πάνω από 5 χρόνια εμπειρίαανάπτυξη επαγγελματικής ιστοσελίδας. Δουλεύω με PHP

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

Εάν η χωματερή σας δεν υπερβαίνει κατά πολύ το επιτρεπόμενο όριο, μπορείτε να το χωρίσετε σε πολλά μέρη και να το εισαγάγετε σε πολλά περάσματα. Αυτό δικαιολογείται εάν, για παράδειγμα, το όριο είναι 2Mb και η βάση δεδομένων σας έχει μέγεθος 5-10Mb. Είναι σαφές ότι το «κόψιμο» μιας βάσης δεδομένων 100 MB σε 50 μέρη είναι μια μάλλον χρονοβόρα και δαπανηρή διαδικασία από άποψη χρόνου.

Υπάρχουν πολλές επιλογές για την επίλυση αυτού του προβλήματος.

Επεξεργασία της διαμόρφωσης του διακομιστή web

Δεν υπάρχουν ειδικά προβλήματα με αυτό σε VDS / VPS, απλά πρέπει να διορθώσετε τη διαμόρφωση. Δηλαδή, στο php.ini αυξήστε τις επιτρεπόμενες μέγιστες τιμές για τα αρχεία που ανεβαίνουν στον διακομιστή, το μέγιστο μέγεθος για τα αρχεία που μεταφέρονται με τη μέθοδο POST:

Post_max_size = 2000M upload_max_filesize = 2000M

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

max_execution_time = 32000 max_input_time = 32000

Και για κάθε περίπτωση, μπορείτε να αυξήσετε το μέγεθος της επιτρεπόμενης ποσότητας RAM:

Όριο_μνήμης = 512M

Αφού κάνετε αλλαγές, φροντίστε να επανεκκινήσετε τον διακομιστή web.

Είναι σαφές ότι αυτή η μέθοδος δεν είναι κατάλληλη για εικονική φιλοξενία, επειδή δεν συνεπάγεται τη δυνατότητα επεξεργασίας παραμέτρων.

Sypex Dumper

Μπορείτε να χρησιμοποιήσετε λογισμικό τρίτων. Και η πρώτη εφαρμογή που αξίζει να προσέξετε είναι το Sypex Dumper.

Έχοντας το χρησιμοποιήσει για πρώτη φορά πριν από πολλά χρόνια και έχοντας εκτιμήσει όλες τις δυνατότητες και τα πλεονεκτήματά του, μπορώ με ασφάλεια να το χαρακτηρίσω ως "Must Have". Το Sypex Dumper είναι μια εφαρμογή διακομιστή PHP που δεν απαιτεί εγκατάσταση. Αρκεί να το αντιγράψετε, για παράδειγμα, στη ρίζα του ιστότοπού σας στον κατάλογο sxd και να το καλέσετε στο πρόγραμμα περιήγησης: http://Your_Site/sxd/. Αξίζει να σημειωθεί ότι πρέπει πρώτα να τοποθετήσετε ένα dump της βάσης δεδομένων σας στον κατάλογο αντιγράφων ασφαλείας. Αφού αρχικοποιηθεί το σενάριο, θα δείτε έναν πίνακα εξουσιοδότησης για σύνδεση στη βάση δεδομένων. Εισαγάγετε τα στοιχεία σύνδεσης και τον κωδικό πρόσβασής σας. Ο κεντρικός υπολογιστής και η θύρα είναι προαιρετικά μόνο εάν είναι συγκεκριμένα.

Μετά την εξουσιοδότηση, μπορείτε να μεταβείτε απευθείας στην εισαγωγή της βάσης δεδομένων. Στο χωράφι "Βάση δεδομένων"θα επιλεγεί η βάση δεδομένων στην οποία είστε συνδεδεμένοι και στο πεδίο "Αρχείο"θα δείτε το dump που ανεβάσατε νωρίτερα στον κατάλογο Backup.

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

Αυτό, στην πραγματικότητα, είναι όλο - η βάση δεδομένων εισάγεται!

Κονσόλα

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

Τελικά

Δεν υποθέτω να πω ότι το Sydex Dumper είναι η μόνη και σωστή λύση. Υπάρχουν άλλοι πιο κομψοί τρόποι που απαιτούν από τον χρήστη να έχει ορισμένες γνώσεις και κατάλληλη πρόσβαση στις ρυθμίσεις διακομιστή.

Αλλά σε ένα κοινό περιβάλλον φιλοξενίας, το Sydex Dumper θα είναι σίγουρα ο απαραίτητος βοηθός σας.

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

Οι βάσεις δεδομένων (ή DB για συντομία) στους περισσότερους ιστότοπους έχουν μέγεθος (βάρος) ίσο με αρκετές δεκάδες Mb (megabyte). Το αρχικό μέγεθος της βάσης δεδομένων κατά την έναρξη διαφορετικών έργων εξαρτάται από τη δομή του ίδιου του ιστότοπου (CMS), αλλά στη συνέχεια το βάρος τους αυξάνεται με κάθε νέα καταχώρηση.

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

Είχα την ευκαιρία να δουλέψω με πολλούς ιστότοπους, το μέγεθος των βάσεων δεδομένων των οποίων ξεπέρασε τα 500 MB (megabyte) και σε μερικούς έφτασε ακόμη και τα 2 GB (gigabytes). Δεδομένου ότι οι βάσεις δεδομένων αυτού του μεγέθους είναι δύσκολο να μεταφερθούν χρησιμοποιώντας τυπικές μεθόδους (λόγω ορίων φιλοξενίας και προγράμματος περιήγησης), θα μοιραστώ μαζί σας αρκετές μεθόδους εργασίας που θα σας βοηθήσουν στην επίλυση τέτοιων εργασιών (μεταφορά μεγάλων βάσεων δεδομένων).

Εξαγωγή (λήψη) μεγάλων βάσεων δεδομένων MySQL μέσω του Sypex Dumper

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

Το "Sypex Dumper" είναι ένα προϊόν λογισμικού γραμμένο σε PHP που σας επιτρέπει να εργάζεστε με βάσεις δεδομένων χωρίς τη χρήση phpMyAdmin. Τα οφέλη του "Sypex Dumper" περιλαμβάνουν:

  1. Πολύγλωσσο (υποστηρίζει πολλές γλώσσες).
  2. Υπάρχει μια δωρεάν έκδοση του σεναρίου (αυτό είναι αρκετό για τις εργασίες μας).
  3. Υψηλή ταχύτητα εκτέλεσης εργασιών.
  4. Εργασία με μεγάλες βάσεις δεδομένων.
  5. Βολική και ξεκάθαρη διεπαφή.
  6. Και πολλά άλλα ενδιαφέροντα «τσιπάκια».

Θα τα χρησιμοποιήσουμε για τη λήψη (μεταφορά) μεγάλων βάσεων δεδομένων.

Για να εξαγάγετε (λάβετε, κατεβάσετε) τη βάση δεδομένων του συγκεκριμένου ιστότοπού σας για περαιτέρω χρήση, πρέπει να κάνετε τα εξής.

1. δωρεάν από την ιστοσελίδα μας.

2. sxdμε τρόπο βολικό για εσάς.

3. Στη συνέχεια, μεταβείτε στο (Οπου your_site.com Να ερθει μεσα».

4. Στη σελίδα που ανοίγει (με επιτυχή εξουσιοδότηση), κάντε κλικ 1 φορά στην ενότητα " Εξαγωγή» στο επάνω μενού. Εάν πολλές βάσεις δεδομένων είναι διαθέσιμες στον χρήστη, επιλέξτε αυτή που θα εξαγάγουμε (λήψη) από την αναπτυσσόμενη λίστα. Οι υπόλοιπες ρυθμίσεις μπορούν να παραμείνουν αμετάβλητες και κάντε κλικ στο " Τρέξιμο».


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

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


Επιπλέον, όλες οι βάσεις δεδομένων που εξάγονται θα αποθηκευτούν στον ιστότοπό σας στην πορεία. /sxd/backup/. Εάν η αποθήκευση της βάσης δεδομένων αποτύχει, ελέγξτε ότι ο φάκελος αντιγράφων ασφαλείαςΤα δικαιώματα εγγραφής είναι 777.

Αυτό ολοκληρώνει την εξαγωγή (λήψη) της βάσης δεδομένων.

Εισαγωγή (φόρτωση) μεγάλων βάσεων δεδομένων MySQL μέσω Sypex Dumper

Παραπάνω, συζητήσαμε μαζί σας έναν τρόπο απόκτησης της απαραίτητης βάσης δεδομένων, τώρα πρέπει να τη μεταφέρετε (εισαγάγετε) σε άλλο έργο και για αυτό κάνουμε τα εξής.

1. δωρεάν από την ιστοσελίδα μας.

2. Αποσυμπιέστε το αρχείο και μεταφορτώστε το φάκελο στον ιστότοπο sxdμε τρόπο βολικό για εσάς.

3. Σε φάκελο /sxd/backup/φορτώστε την προηγουμένως ληφθείσα (κατεβασμένη) βάση δεδομένων.

4. Στη συνέχεια μεταβείτε στο http://your_site.ru/sxd/index.php(Οπου your_site.com– ο τομέας του ιστότοπού σας), μετά από τον οποίο θα ανοίξει μπροστά σας μια φόρμα εισαγωγής δεδομένων. Σε αυτό, καθορίζετε τα δεδομένα του χρήστη που έχει τα δικαιώματα διαχείρισης της βάσης δεδομένων που χρειάζεστε και κάνετε κλικ στο " Να ερθει μεσα».

5. Στη σελίδα που ανοίγει (με επιτυχή εξουσιοδότηση), κάντε κλικ 1 φορά στην ενότητα " Εισαγωγή» στο επάνω μενού. Εάν πολλές βάσεις δεδομένων είναι διαθέσιμες στον χρήστη, επιλέξτε αυτή στην οποία θα εισαγάγουμε (φορτώνουμε) δεδομένα από την αναπτυσσόμενη λίστα. Οι υπόλοιπες ρυθμίσεις μπορούν να παραμείνουν αμετάβλητες και κάντε κλικ στο " Τρέξιμο».


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

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


Εξαγωγή (λήψη) μεγάλων βάσεων δεδομένων MySQL μέσω τερματικού SSH

Το SSH είναι ένα πρωτόκολλο δικτύου που σας επιτρέπει να κάνετε εξ αποστάσεως (μέσω ειδικές ομάδες) διαχείριση του συστήματος ή του διακομιστή. Στα Windows, υπάρχουν πολλά προγράμματα για εργασία με αυτό το πρωτόκολλο, το πιο δημοφιλές από τα οποία είναι το PuTTY.

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

1. Ξεκινάμε το Terminal. Σε αυτό μοιάζει με αυτό:


2. Εάν συνδεθείτε στον διακομιστή μέσω προγράμματος τρίτου κατασκευαστή, συνδεθείτε σε αυτόν εισάγοντας τα κατάλληλα δεδομένα (μπορείτε να τα λάβετε στον πίνακα ελέγχου φιλοξενίας ή από τον πάροχο φιλοξενίας).

δεύτερος- Αυτό:

mysqldump -u ΟΝΟΜΑ ΧΡΗΣΤΗ -p ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ > backup.sql

απευθείας η ίδια η εξαγωγή, όπου:

ΟΝΟΜΑ ΧΡΗΣΤΗ– σύνδεση του χρήστη που έχει πρόσβαση στη βάση δεδομένων.

ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ– το όνομα της βάσης δεδομένων που θέλουμε να εξαγάγουμε.

backup.sql– το όνομα του αρχείου όπου θα αποθηκευτεί η βάση δεδομένων και η διαδρομή σε σχέση με το . Με αυτό το σχέδιο, η βάση δεδομένων θα αποθηκευτεί στη ρίζα φιλοξενίας.

4. στο τρίτο βήμαΕισαγω"στο πληκτρολόγιο. Σημείωση

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

Η διαδικασία εξαγωγής (και εισαγωγής) σε SSH δεν μεταδίδεται, και εάν η βάση δεδομένων σας είναι αρκετά μεγάλη, κάντε υπομονή, καθώς μπορείτε να λάβετε απάντηση από τον διακομιστή μετά από περισσότερα από 20 λεπτά.

Εισαγωγή (φόρτωση) μεγάλων βάσεων δεδομένων MySQL μέσω τερματικού SSH

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

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

2. Συνδεθείτε στο hosting/server σας μέσω SSH.

οπότε σίγουρα πάμε στη ρίζα φιλοξενίας, και δεύτερος- Αυτό:

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

4. Εάν όλα είναι καλά και η βάση είναι στη θέση του, εισαγάγετε την τελική εντολή:

mysql -u ΟΝΟΜΑ ΧΡΗΣΤΗ -p ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ< backup.sql

ΟΝΟΜΑ ΧΡΗΣΤΗ– σύνδεση του χρήστη που έχει πρόσβαση στη βάση δεδομένων.

ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ– το όνομα της βάσης δεδομένων στην οποία θα εισαγάγουμε τα δεδομένα.

backup.sql- το όνομα του αρχείου που θα φορτωθεί και η διαδρομή σε σχέση με το . Με αυτό το σχέδιο, η βάση δεδομένων θα εισαχθεί από τη ρίζα φιλοξενίας.

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

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

Καλημέρα συνάδελφοι 🙂

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

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

Η λογική συνέχεια αυτής της ιστορίας θα είναι η επαναφορά της βάσης δεδομένων και των πληροφοριών που είναι αποθηκευμένες σε αυτήν χρησιμοποιώντας λειτουργίες εισαγωγής βάσης δεδομένων MySQL. Και, κυρίως, θα συνεχίσουμε να το κάνουμε αυτό με το εργαλείο όλων των σκληρών προγραμματιστών - μέσω της κονσόλας.

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

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

Εισαγωγή βάσης δεδομένων MySQL: τι και γιατί;

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

Η εισαγωγή, καθώς και η εξαγωγή της βάσης δεδομένων MySQL, υπάρχουν δύο τύποι πληροφοριών που αποθηκεύονται στη βάση δεδομένων:

  1. τη δομή της βάσης δεδομένων, τους πίνακες της και τα δεδομένα που είναι αποθηκευμένα σε αυτούς (στην καθομιλουμένη αναφέρεται ως απόρριψη βάσης δεδομένων)·
  2. απλώς δεδομένα που αποθηκεύονται σε έναν πίνακα ή συλλέγονται χρησιμοποιώντας ΕΠΙΛΕΓΩαιτήσεων.

Αυτό το άρθρο θα καλύψει και τις δύο επιλογές.

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

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

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

Για τους σκοπούς αυτούς, το συνηθισμένο txt, τα δεδομένα στα οποία θα χωριστούν ή αρχεία που δημιουργούνται σε ειδικούς επεξεργαστές υπολογιστικών φύλλων (Microsoft Office Excel, OpenOffice κ.λπ.) που έχουν διαφορετική επέκταση: xls, csv, odt κ.λπ.

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

Προσθήκη δεδομένων στη MySQL: Εργαλεία

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

Θα τα απαριθμήσω, ξεκινώντας από το χαμηλότερο επίπεδο, τελειώνοντας στο υψηλότερο επίπεδο (όσον αφορά τη χρήση όλων των ειδών κελύφους και πρόσθετων):

  1. Κονσόλα διακομιστή και γραμμή εντολών MySQL.
  2. Σενάρια γραμμένα σε γλώσσες προγραμματισμού που σας επιτρέπουν να γράφετε δεδομένα στη MySQL χρησιμοποιώντας γλωσσικά εργαλεία.
  3. Έτοιμα προγράμματα που παρέχουν μια οπτική διεπαφή για εργασία με τη βάση δεδομένων (το ίδιο phpMyAdmin, MySQL WorkBench, MySQL Manager κ.λπ.).

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

Με τον ένα ή τον άλλο τρόπο, η κονσόλα βρίσκεται στην κορυφή των πάντων και τα υπόλοιπα εργαλεία, στην πραγματικότητα, είναι οι εξομοιωτές της.

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

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

Νομίζω ότι όλοι όσοι έχουν προσπαθήσει ποτέ να ανεβάσουν ένα dump σε μια μεγάλη βάση δεδομένων MySQL χρησιμοποιώντας το phpMyAdmin καταλαβαίνουν για τι πράγμα μιλάω.

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

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

Ελπίζω ότι σας παρακίνησα να εισαγάγετε τη βάση δεδομένων MySQL μέσω της κονσόλας (εξάλλου, τόσο η δομή της όσο και τα ξεχωριστά δεδομένα).

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

Πώς να επαναφέρετε μια βάση δεδομένων MySQL από μια ένδειξη χρήσης χρησιμοποιώντας την κονσόλα;

Έτσι, για να αναπτύξετε μια ένδειξη MySQL από την κονσόλα, υπάρχουν δύο τρόποι:

  1. χρησιμοποιώντας μια εντολή στη γραμμή εντολών MySQL.
  2. στην ίδια την κονσόλα διακομιστή.

Ας ξεκινήσουμε με τη σειρά.

Έτσι, για να εισαγάγουμε μια ένδειξη ένδειξης δεδομένων MySQL σε ένα υπάρχον αποθετήριο μέσω του , πρέπει πρώτα να το εκτελέσουμε και να επιλέξουμε την επιθυμητή βάση δεδομένων στην οποία θα ανεβάσουμε το dump μας.

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

Αφού κάνετε τα παραπάνω, πληκτρολογήστε την ακόλουθη εντολή στο MySQL Shell:

Πηγή path_and_dump_filename;

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

Χωρίς να μεταβείτε πρώτα στην επιθυμητή βάση δεδομένων, μετά τη σύνδεση στον διακομιστή MySQL στην κονσόλα, το dump μπορεί να εισαχθεί με την ακόλουθη εντολή:

Mysql -u όνομα χρήστη -p database_name< путь_и_имя_файла_дампа

Αυτό είναι όλο. Το κύριο πράγμα είναι να περιμένετε να ολοκληρωθεί η εισαγωγή εάν το αρχείο είναι πολύ μεγάλο. Η ολοκλήρωση του dump μπορεί να κριθεί από το πότε η κονσόλα διακομιστή θα είναι ξανά διαθέσιμη.

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

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

Στο Linux, αυτό μπορεί να γίνει ως εξής:

Gunzip > [archive_filename.sql.gz] | mysql -u -p

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

Όπως μπορείτε να δείτε, η εισαγωγή μιας ένδειξης MySQL dump μέσω της κονσόλας είναι μια πολύ απλή λειτουργία που μπορεί να εκτελεστεί με μία μόνο εντολή. Επομένως, δεν χρειάζεται να είστε προγραμματιστής για να εκτελέσετε αυτήν τη διαδικασία.

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

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

Φόρτωση δεδομένων στη βάση δεδομένων MySQL από ένα αρχείο στην κονσόλα

Μιλήσαμε για την επαναφορά μιας βάσης δεδομένων MySQL από ένα dump στην κονσόλα. Τώρα είναι η ώρα να καταλάβετε πώς μπορείτε να εισάγετε δεδομένα από αρχεία με τον ίδιο τρόπο, συμπεριλαμβανομένων των xls και csv σε μια βάση δεδομένων MySQL.

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

Ας ξεκινήσουμε πάλι την ανασκόπηση με τη σειρά.

Έτσι, για να εισαγάγουμε ένα αρχείο στη γραμμή εντολών MySQL, το τρέχουμε ξανά και πηγαίνουμε στη βάση δεδομένων στην οποία θα φορτωθούν τα δεδομένα.

ΦΟΡΤΩΣΗ ΑΡΧΕΙΟΥ ΔΕΔΟΜΕΝΩΝ "path_and_dump_file_name" ΣΤΙΣ ΣΤΗΛΕΣ ΠΙΝΑΚΑΣ `database_table` TERMINATED BY "," ΠΕΡΙΒΑΛΛΟΜΕΝΑ ΑΠΟ "\"" LINES TERMINATED by "\n";

Μην ξεχνάτε ότι εάν ο διακομιστής MySQL ξεκίνησε με την επιλογή --secure-file-priv(το οποίο συμβαίνει συχνά όταν χρησιμοποιούνται διανομές MySQL που περιλαμβάνονται στις εκδόσεις WAMP / MAMP), τότε το όνομα αρχείου πρέπει να καθοριστεί λαμβάνοντας υπόψη τη μεταβλητή συστήματος safe_file_priv.

Για να εισαγάγουμε τη βάση δεδομένων MySQL στην κονσόλα διακομιστή χωρίς να μπούμε στο MySQL Shell, χρειαζόμαστε το βοηθητικό πρόγραμμα mysqlimport, το οποίο αποτελεί μέρος της διανομής MySQL και την ακόλουθη κλήση προς αυτήν:

mysqlimport -u username -p database_name name_and_path_to_import_file

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

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

Εκείνοι. εάν θέλετε να κάνετε εισαγωγή από πίνακα excel σε πίνακα mysql χρήστες, τότε το αρχείο σας θα πρέπει να ονομαστεί users.xls.

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

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

Εάν ξαφνικά οι στήλες στο εισαγόμενο αρχείο δεν έχουν την ίδια σειρά με τις στήλες του πίνακα της βάσης δεδομένων, τότε για να διευκρινίσετε τη σειρά τους, πρέπει να χρησιμοποιήσετε την επιλογή --στήλες με την ακόλουθη μορφή:

Mysqlimport -u username -p database_name --collumns column1, column2, ... import_file_name and_path

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

Εάν θέλετε να εξοικειωθείτε μαζί τους, τότε η πλήρης λίστα τους είναι διαθέσιμη εδώ - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

Δυνατότητες φόρτωσης δεδομένων στη βάση δεδομένων MySQL από μια χωματερή

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

Δυστυχώς, οι ίδιες οι εντολές εισαγωγής της βάσης δεδομένων MySQL δεν έχουν τέτοιες επιλογές.

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

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

2. Γράφουμε τις παρακάτω γραμμές στην αρχή του αρχείου:

ΣΕΤ ξένων_κλειδιών_ελέγχων = 0; SET UNIQUE_CHECKS = 0; SET AUTOCOMMIT = 0;

Σημείωση! Ίσως είναι ήδη εκεί ή έχουν σχολιαστεί (πολλά προγράμματα που κάνουν dumps μπορούν να τα προσθέσουν αυτόματα)

3. Στο τέλος του αρχείου, γράψτε τις αντίστροφες ενέργειες:

ΣΕΤ ξένων_κλειδιών_ελέγχων = 1; SET UNIQUE_CHECKS = 1; SET AUTOCOMMIT = 1;

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

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

ΑΠΟΣΤΟΛΗ ΠΙΝΑΚΑ ΑΝ ΥΠΑΡΧΕΙ «πελάτες». ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ «πελάτες» (...);

Εκείνοι. πραγματοποιείται αναζήτηση στη βάση δεδομένων για έναν πίνακα με το ίδιο όνομα με τον εισαγόμενο, και εάν βρεθεί, διαγράφεται και δημιουργείται εκ νέου.

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

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

Δυνατότητες εισαγωγής csv στη βάση δεδομένων MySQL και σε άλλα αρχεία

Κατά τη φόρτωση δεδομένων σε μια βάση δεδομένων MySQL από αρχεία κειμένου, μπορεί επίσης να είναι απαραίτητο να απενεργοποιήσετε τα ξένα κλειδιά.

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

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

SET FOREIGN_KEY_CHECKS=0;

Ωστόσο, δεν ανέφερα εκεί ότι η μεταβλητή συστήματος MySQL ΞΕΝΑ_ΚΛΕΙΔΙ_ΕΛΕΓΧΟΙέχει δύο έννοιες: καθολική και συνεδρία (για την τρέχουσα συνεδρία).

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

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

Γιατί αποφάσισα να το θυμηθώ;

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

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

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

SET SESSION variable_name = variable_value; SET @@session.variable_name = variable_value; SET @@variable_name = variable_value;

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

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

Κατέληξα να ορίσω την καθολική τιμή FOREIGN_KEY_CHECKS και η εισαγωγή πέτυχε.

Μπορείτε να το κάνετε αυτό με έναν από τους παρακάτω τρόπους:

SET GLOBAL variable_name = variable_value. SET @@global.variable_name = variable_value;

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

SELECT @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;

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

Τα λέμε σύντομα! 🙂

ΥΣΤΕΡΟΓΡΑΦΟ.: εάν χρειάζεστε έναν ιστότοπο ή θέλετε να κάνετε αλλαγές σε έναν υπάρχοντα, αλλά δεν υπάρχει χρόνος και επιθυμία για αυτό, μπορώ να προσφέρω τις υπηρεσίες μου.

Πάνω από 5 χρόνια εμπειρίαανάπτυξη επαγγελματικής ιστοσελίδας. Δουλεύω με PHP, ανοιχτό καρότσι,