ל-MySQL יש תכונה לייצוא טבלה לקובץ ה-CSV. פורמט קובץ CSV הוא ערך מופרד בפסיקים שבו אנו משתמשים כדי להחליף נתונים בין יישומים שונים כגון Microsoft Excel , Goole Docs ו-Open Office. זה שימושי לקבל נתוני MySQL בפורמט קובץ CSV המאפשר לנו לנתח ולעצב אותם בצורה שאנו רוצים. זהו קובץ טקסט רגיל שעוזר לנו לייצא נתונים בקלות רבה.
MySQL מספק דרך קלה לייצוא כל טבלה לקובצי CSV שנמצאים בשרת מסד הנתונים. עלינו לוודא את הדברים הבאים לפני ייצוא נתוני MySQL:
- לתהליך של שרת MySQL יש גישת קריאה/כתיבה לתיקיית היעד שצוינה, המכילה את קובץ ה-CSV.
- קובץ ה-CSV שצוין לא אמור להתקיים במערכת.
כדי לייצא את הטבלה לקובץ CSV, נשתמש ב- SELECT INTO....OUTFILE הַצהָרָה. הצהרה זו היא מחמאה של לטעון מידע הפקודה, המשמשת לכתיבת נתונים מטבלה ולאחר מכן לייצא אותם לפורמט קובץ מוגדר במארח השרת. זה כדי להבטיח שיש לנו הרשאת קובץ להשתמש בתחביר זה.
SELECT column_lists INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/filename.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY ' ';
אנחנו יכולים גם להשתמש בתחביר זה עם הצהרת ערכים כדי לייצא נתונים ישירות לקובץ. ההצהרה הבאה מסבירה זאת בצורה ברורה יותר:
SELECT * FROM (VALUES ROW(1,2,3,4),ROW(5,6),ROW(7,8)) AS table1 INTO OUTFILE '/tmp/selected_values.txt';
אם אנחנו רוצים לייצא כל עמודות הטבלה , נשתמש בתחביר שלהלן. עם הצהרה זו, הסדר ומספר השורות ישלטו על ידי מיין לפי ו לְהַגבִּיל סָעִיף.
תמונות יישור css
TABLE table_name ORDER BY lname LIMIT 1000 INTO OUTFILE '/path/filename.txt' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY ' ';;
מלמעלה,
קווים שהסתיימו על ידי ',' : הוא משמש לציון שורות השורות בקובץ שמסתיימות על ידי אופרטור פסיק. כל שורה מכילה את הנתונים של כל עמודה בקובץ.
שדות מוקפים על ידי ''' : הוא משמש לציון השדה של הקובץ המוקף במרכאות כפולות. זה מונע את הערכים המכילים מפרידי פסיקים. אם הערכים הכלולים במרכאות כפולות, הוא אינו מזהה פסיק כמפריד.
מיקום האחסון של הקובץ המיוצא
מיקום האחסון של כל קובץ מיוצא ב-MySQL מאוחסן במשתנה ברירת המחדל secure_file_priv . אנו יכולים לבצע את הפקודה למטה כדי לקבל את נתיב ברירת המחדל של קובץ מיוצא.
mysql> SHOW VARIABLES LIKE 'secure_file_priv';
לאחר הביצוע, זה ייתן את התוצאה כדלקמן, כאשר נוכל לראות את הנתיב הזה: C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ כמיקום ברירת המחדל של הקובץ. נתיב זה ישמש בזמן הפעלת פקודת ייצוא.
אם ברצוננו לשנות את מיקום הייצוא המוגדר כברירת מחדל של קובץ ה-CSV שצוין ב- secure_file_priv משתנה, אנחנו צריכים לערוך את my.ini קובץ תצורה. בפלטפורמת Windows, קובץ זה ממוקם בנתיב זה: C:ProgramDataMySQLMySQL Server X.Y .
אם ברצוננו לייצא נתוני MySQL, ראשית, עלינו ליצור א מאגר מידע עם אחד לפחות שולחן . אנו הולכים להשתמש בטבלה זו כדוגמה.
אנחנו יכולים ליצור א מסד נתונים וטבלה על ידי ביצוע הקוד שלהלן בעורכים שבהם אנו משתמשים:
ביטויי ג'אווה למבדה
CREATE DATABASE testdb; USE testdb; CREATE TABLE employee_detail ( ID int NOT NULL AUTO_INCREMENT, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL, Phone varchar(15) DEFAULT NULL, City varchar(25) DEFAULT NULL, PRIMARY KEY (ID), UNIQUE KEY unique_email (Email), UNIQUE KEY index_name_phone (Name,Phone) ) INSERT INTO employee_detail ( Id, Name, Email, Phone, City) VALUES (1, 'Peter', '[email protected]', '49562959223', 'Texas'), (2, 'Suzi', '[email protected]', '70679834522', 'California'), (3, 'Joseph', '[email protected]', '09896765374', 'Alaska'), (4, 'Alex', '[email protected]', '97335737548', 'Los Angeles'), (5, 'Mark', '[email protected]', '78765645643', 'Washington'), (6, 'Stephen', '[email protected]', '986345793248', 'New York');
אם נוציא לפועל את בחר הצהרה, נראה את הפלט הבא:
ייצא נתוני MySQL בפורמט CSV באמצעות המשפט SELECT INTO ... OUTFILE
כדי לייצא את נתוני הטבלה לקובץ CSV, עלינו לבצע את השאילתה באופן הבא:
SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY ' ';
נקבל את הפלט הבא, שבו נוכל לראות ששש שורות מושפעות. הסיבה לכך היא שהטבלה שצוינה מכילה שש שורות בלבד.
אם נבצע שוב את אותה משפט, MySQL מייצר הודעת שגיאה שניתן לראות בפלט הבא:
java localdatetime
הודעת השגיאה אומרת לנו ששם הקובץ שצוין כבר קיים במיקום שצוין. לפיכך, אם אנו מייצאים את קובץ ה-CSV החדש עם אותו שם ומיקום, לא ניתן ליצור אותו. אנחנו יכולים לפתור את זה או למחוק את הקובץ הקיים במיקום שצוין או לשנות את שם הקובץ כדי ליצור אותו באותו מקום.
אנו יכולים לאמת את קובץ ה-CSV שנוצר במיקום שצוין או לא על ידי ניווט לנתיב נתון באופן הבא:
כשנפתח את הקובץ הזה, הוא ייראה כמו התמונה למטה:
בתמונה, אנו יכולים לראות שהשדות המספריים נמצאים במרכאות. אנחנו יכולים לשנות את הסגנון הזה על ידי הוספה אופציונלית סעיף לפני מוקף על ידי :
SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''' LINES TERMINATED BY ' ';
ייצוא נתונים עם כותרת עמודה
לפעמים אנחנו רוצים לייצא נתונים יחד עם כותרות עמודות שהופכות את הקובץ לנוח. הקובץ המיוצא מובן יותר אם השורה הראשונה של קובץ ה-CSV מכילה את כותרות העמודות. אנו יכולים להוסיף את כותרות העמודות באמצעות ה איחוד הכל הצהרה כדלקמן:
SELECT 'Id', 'Name', 'Email', 'Phone', 'City' UNION ALL SELECT Id, Name, Email, Phone, City FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS TERMINATED BY ';' ENCLOSED BY ''' ESCAPED BY ''' LINES TERMINATED BY ' ';
בשאילתה זו, אנו יכולים לראות שהוספנו כותרת לכל שם עמודה. נוכל לאמת את הפלט על ידי ניווט לכתובת ה-URL שצוינה כאשר השורה הראשונה מכילה את הכותרת של כל עמודה:
ייצוא טבלת MySQL בפורמט CSV
MySQL OUTFILE מאפשר לנו גם לייצא את הטבלה מבלי לציין שם עמודה. אנו יכולים להשתמש בתחביר שלהלן כדי לייצא טבלה בפורמט קובץ CSV:
למצוא את האייפון שלי מאנדרואיד
TABLE employee_detail ORDER BY City LIMIT 1000 INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY ' ';
אם אנו מבצעים את ההצהרה לעיל, כלי שורת הפקודה שלנו מייצר את התוצאה הבאה. זה אומר שהטבלה שצוינה מכילה שש שורות, שייצאו פנימה עובד_backup.csv קוֹבֶץ.
טיפול בערכים אפסים
לפעמים לשדות בערכת התוצאות יש ערכי NULL, ואז קובץ היעד (סוג קובץ מיוצא) יכיל N במקום NULL. נוכל לתקן בעיה זו על ידי החלפת הערך NULL ב 'לא רלוונטי (לא רלוונטי)' משתמש ב IFNULL פוּנקצִיָה. ההצהרה שלהלן מסבירה זאת בצורה ברורה יותר:
SELECT Name, Email, Phone, IFNULL(Phone, 'N/A') FROM employee_detail INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee_backup.csv' FIELDS ENCLOSED BY ''' TERMINATED BY ';' ESCAPED BY ''' LINES TERMINATED BY ' ';
ייצוא טבלה לפורמט CSV באמצעות MySQL Workbench
אם איננו רוצים לגשת לשרת מסד הנתונים לצורך ייצוא קובץ ה-CSV, MySQL מספק דרך אחרת, כלומר באמצעות MySQL Workbench. Workbench הוא כלי GUI לעבודה עם מסד נתונים MySQL מבלי להשתמש בכלי שורת פקודה. זה מאפשר לנו לייצא את ערכת התוצאות של הצהרה לפורמט CSV במערכת המקומית שלנו. לשם כך, עלינו לבצע את השלבים הבאים:
- הפעל את ההצהרה/שאילתה וקבל את ערכת התוצאות שלה.
- לאחר מכן, בחלונית התוצאות, לחץ 'ייצא ערכת רשומות לקובץ חיצוני' אוֹפְּצִיָה. ערכת השיאים משמשת עבור ערכת התוצאות.
- לבסוף, תיבת דו-שיח חדשה תוצג. כאן, עלינו לספק שם קובץ והפורמט שלו. לאחר מילוי הפרטים, לחץ על להציל לַחְצָן. התמונה הבאה מסבירה זאת בצורה ברורה יותר:
כעת, אנו יכולים לאמת את התוצאה על ידי ניווט לנתיב שצוין.