總覽
本文說明如何從 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_NAME
和 OUTPUT_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,但排除實際資料
- 排除特定表格
以下是您可以在這些情境中使用的一些命令列選項的概述
從 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_NAME
和 INPUT_FILE
預留位置替換為以下各自的值
- 您的**資料庫名稱**(必須預先建立具有該名稱的資料庫!)
- 目標**輸入檔案**的名稱(可能以
.sql
結尾)
例如
mysql mydb < mydb.sql
要進行身份驗證,您可以使用上面討論的 --user
和 --password
選項
mysql --user root --password mydb < mydb.sql
要預先建立資料庫,您可以使用以下 SQL 陳述式
CREATE DATABASE mydb;
結論
從 MySQL 匯出資料並再次匯入以重新建立您的資料結構和填充資料庫,是遷移資料、備份和恢復或準備複寫的好方法。了解 mysqldump
和 mysql
工具如何協同工作以完成此任務,將有助於您跨資料庫邊界傳輸資料。