Σε μια λειτουργία δημιουργίας αντιγράφων ασφαλείας και ανάκτησης δεδομένων mysql, παρουσιάστηκε ένα πρόβλημα: μετά τη χρήση του sqlyog για δημιουργία αντιγράφων ασφαλείας δεδομένων και, στη συνέχεια, την ανάκτηση των δεδομένων σε άλλο διακομιστή, το διαχωριστικό "'" καταβροχθίστηκε λόγω του μεταβλητού πεδίου σε έναν από τους πίνακες (λόγω του προβλήματος της δυαδικής κωδικοποίησης, το διαχωριστικό εισαγωγικών αντιμετωπίστηκε ως μέρος των δεδομένων), έτσι ώστε τα δεδομένα να μην μπορούν να εισαχθούν κανονικά.
Ορισμένα εργαλεία κειμένου χρησιμοποιήθηκαν για επεξεργασία, αλλά ήταν ανεπιτυχή, μερικά από τα οποία μπορούσαν να αναγνωριστούν, αλλά τροποποιούσαν αυτόματα τα δυαδικά κωδικοποιημένα δεδομένα και μερικά εισήγαγαν άλλα δυαδικά δεδομένα, με αποτέλεσμα να μην είναι ακόμα αναγνώσιμα.
Εξετάστε λοιπόν άλλες μεθόδους: διαβάστε τα δεδομένα και γράψτε τη δήλωση SQL και, στη συνέχεια, εισαγάγετέ την. Οι συγκεκριμένες μέθοδοι είναι:
(1) Χρησιμοποιήστε τη συνάρτηση HEX για να διαβάσετε τα δεδομένα κατά την εξαγωγή και να μετατρέψετε τα δυαδικά δεδομένα σε δεκαεξαδική συμβολοσειρά.
επιλέξτε HEX(binField) από το testTable.
(2) Χρησιμοποιήστε τη συνάρτηση UNHEX για να μετατρέψετε τη δεκαεξαδική συμβολοσειρά στη βάση δεδομένων εισαγωγής δυαδικών δεδομένων κατά την εισαγωγή.
εισαγωγή στον πίνακα δοκιμήςΤιμές binField(UNHEX(@hexstr));
Ο ακόλουθος κώδικας δείχνει τη λειτουργικότητα των HEX και UNHEX:
SELECT HEX('this is a test str') και το αποτέλεσμα του ερωτήματος είναι: 746869732069732061207465737420737472 SELECT UNHEX('746869732069732061207465737420737472'), και το αποτέλεσμα του ερωτήματος είναι: αυτό είναι ένα test str
Μπορείτε επίσης να διαβάσετε απευθείας τον δεκαεξαδικό χαρακτήρα, προσθέτοντας ένα πρόθεμα 0x στη συμβολοσειρά: SELECT 0x746869732069732061207465737420737472, το αποτέλεσμα του ερωτήματος είναι: αυτό είναι ένα test str
Επιπλέον, μπορείτε επίσης να χρησιμοποιήσετε δυαδικές μεθόδους εισαγωγής και εξαγωγής για τη δημιουργία αντιγράφων ασφαλείας και την επαναφορά δεδομένων. Δεν υπάρχει συζήτηση εδώ.
|