分享到

總覽

本文說明如何從 MySQL 資料庫匯出資料以及匯入資料。您可以在官方 MySQL 文件中了解更多關於此主題的資訊。

使用 mysqldump 匯出資料

mysqldump 是一個原生的 MySQL 命令列工具,您可以使用它從您的 MySQL 資料庫匯出資料。要查看此命令的所有選項,請執行

mysqldump --help

請注意,您的 MySQL 安裝預設包含 mysqldump,有時在 macOS 上會放在 /usr/local/mysql/bin 中。如果命令未自動識別,您可以透過指向該目錄 /usr/local/mysql/bin/mysqldump 來調用命令,或者將其新增到您的 PATH 中,以便您可以執行 mysqldump 而無需指定目錄。

摘自 MySQL 文件

mysqldump 用戶端工具執行邏輯備份,產生一組 SQL 陳述式,可以執行這些陳述式以重現原始資料庫物件定義和表格資料。它傾印一個或多個 MySQL 資料庫以進行備份或傳輸到另一個 SQL 伺服器。mysqldump 命令也可以產生 CSV、其他分隔文字或 XML 格式的輸出。

基本命令如下所示

mysqldump DB_NAME > OUTPUT_FILE

您需要將 DB_NAMEOUTPUT_FILE 預留位置替換為以下各自的值

  • 您的**資料庫名稱**
  • 所需**輸出檔案**的名稱(為了最佳互操作性,應以 .sql 結尾)

例如,要從名為 mydb 的本機 MySQL 伺服器的資料庫匯出資料到名為 mydb.sql 的檔案,您可以使用以下命令

mysqldump mydb > mydb.sql

提供資料庫憑證

您可以新增以下引數來指定您的 MySQL 資料庫伺服器的位置

引數預設值描述
--host (簡寫:-h)localhost伺服器主機的位址
--port (簡寫:-p)-MySQL 伺服器正在監聽的伺服器主機的埠

要針對 MySQL 資料庫伺服器進行身份驗證,您可以使用以下引數

引數預設值描述
--user (簡寫:-u)-資料庫使用者的名稱。
--password (簡寫:-p)-觸發密碼提示。

例如,如果您想要從具有以下連線字串的 MySQL 資料庫匯出資料

mysql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus

您可以使用以下 mysqldump 命令

mysqldump --host ec2-46-137-91-216.eu-west-1.compute.amazonaws.com --port --user opnmyfngbknppm --password d50rgmkqi2ipus > backup.sql

請注意,**此命令將觸發提示,您需要在其中指定所提供使用者的密碼**。

控制輸出

在某些情況下,您可能不想傾印*整個*資料庫,例如您可能想要

  • 僅傾印實際資料,但排除 DDL(即定義您的資料庫結構描述的 SQL 陳述式,例如 CREATE TABLE,...)
  • 僅傾印 DDL,但排除實際資料
  • 排除特定表格

以下是您可以在這些情境中使用的一些命令列選項的概述

引數預設值描述
--no-create-db (簡寫:-n)false排除任何 DDL 陳述式,僅匯出資料。
--no-data (簡寫:-d)false排除資料,僅匯出 DDL 陳述式。
--tables預設包含所有表格明確指定要傾印的表格名稱。
--ignore-table-從傾印中排除特定表格。

從 SQL 檔案匯入資料

在使用 mysqldump 將您的 MySQL 資料庫匯出為 SQL 檔案後,您可以透過將 SQL 檔案饋入 mysql 來還原資料庫的狀態

mysql DB_NAME < INPUT_FILE

請注意,您的 MySQL 安裝預設包含 mysql,有時在 macOS 上會放在 /usr/local/mysql/bin 中。如果命令未自動識別,您可以透過指向該目錄 /usr/local/mysql/bin/mysql 來調用命令,或者將其新增到您的 PATH 中,以便您可以執行 mysql 而無需指定目錄。

您需要將 DB_NAMEINPUT_FILE 預留位置替換為以下各自的值

  • 您的**資料庫名稱**(必須預先建立具有該名稱的資料庫!)
  • 目標**輸入檔案**的名稱(可能以 .sql 結尾)

例如

mysql mydb < mydb.sql

要進行身份驗證,您可以使用上面討論的 --user--password 選項

mysql --user root --password mydb < mydb.sql

要預先建立資料庫,您可以使用以下 SQL 陳述式

CREATE DATABASE mydb;

結論

從 MySQL 匯出資料並再次匯入以重新建立您的資料結構和填充資料庫,是遷移資料、備份和恢復或準備複寫的好方法。了解 mysqldumpmysql 工具如何協同工作以完成此任務,將有助於您跨資料庫邊界傳輸資料。

關於作者
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以來一直撰寫關於資料庫、Linux、基礎設施和開發人員工具的文章。他目前與妻子和兩隻兔子住在柏林。他通常不必以第三人稱寫作,這對所有相關方來說都是一種解脫。