分享到

概述

本文件描述瞭如何從 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 結尾)

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

mysqldump mydb > mydb.sql

提供資料庫憑據

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

引數預設值描述
--host(短寫:-hlocalhost伺服器主機機器的地址
--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(短寫:-nfalse排除所有 DDL 語句,只匯出資料。
--no-data(短寫:-dfalse排除資料,只匯出 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

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