」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用“mysql”和“sed”將所有 MySQL 表批量匯出到 CSV 檔案?

如何使用“mysql”和“sed”將所有 MySQL 表批量匯出到 CSV 檔案?

發佈於2024-12-22
瀏覽:480

How Can I Bulk Export All MySQL Tables to CSV Files Using `mysql` and `sed`?

使用「mysqldump」批次匯出CSV

在MySQL 資料管理領域,將表內容匯出為CSV 格式可能是一項至關重要的任務。雖然“mysqldump”是一個強大的資料庫備份實用程序,但它缺少將每個表專門匯出為 CSV 的選項。本文探索了一種結合「mysql」和後處理來實現此目的的替代方法。

「mysql」與「-B」參數

癥結所在我們的解決方案的關鍵在於利用「mysql」實用程式中的「-B」參數。此參數指示程式以製表符分隔的格式顯示結果。透過透過「sed」管道輸出,我們可以進一步操作資料以建立帶有標題的 CSV 檔案。

Bash 腳本迭代

匯出 a 中的所有表格資料庫中,我們可以利用 Bash 腳本循環遍歷表名清單。一種方法是組合以下指令:

mysql -u username -ppassword dbname -sN -e "SHOW TABLES;" | \
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
    mysql -B -u username -p password database -h dbhost -e "SELECT * FROM $tb;" \
    | sed “s/”/\””/g;s/'/\'/;s/\t/\”,\”/g;s/^/\”/;s/$/\”/;s/\n//g” > "$tb.csv"
done

此腳本首先使用「SHOW TABLES」檢索表格清單並將其儲存在變數「tb」中。然後它迭代每個表名並使用“-B”參數執行“SELECT *”查詢。結果輸出由 'sed' 處理並儲存在以表命名的 CSV 檔案中。

結論

透過組合'mysql 的'-B' 參數'和'sed'後處理,我們可以有效地將MySQL資料庫中的所有表導出為CSV格式。這種方法規避了「mysqldump」的限制,並在操作輸出資料方面提供了更大的靈活性。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3